본문 바로가기

분류 전체보기56

[TIL] 20230104: KVO 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 키-밸류 옵저빙 Key-Value Observing(KVO) KVO는 프로퍼티의 다른 오브젝트가 변경되었을 때 오브젝트가 알림 받을 수 있도록 하는 메커니즘이다. 어플리케이션의 결합측면에 있어서 중요한 요소라고 볼 수 있다. MVC 디자인 패턴을 따르는 어플리케이션의 오브젝트끼리 상호작용을 할 수 있게 만드는 모드이다. 예를 들어서, model 오브젝트를 view나 controller 레이어의 오브젝트와 같이 움직이게 할 때 KVO를 사용할 수 있다. 전형적으로는, controller 오브젝트는 model 오브젝트를 관찰하고, view 오브젝트는 controller 오브젝트나 model 오브젝트를 관찰한다. KVO를 적용하게.. 2023. 1. 4.
[TIL] 20230103: CaseIterable, 반복문을 통해 딕셔너리 key와 value 가져오기 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. for 문을 돌리고 싶어서 여러 가지 방법들을 찾아보았다. CaseIterable enum을 배열처럼 사용할 수 있는 프로토콜이다. CaseIterable 타입을 이용할 때, allCases 프로퍼티를 사용하면 그 타입의 모든 case들 컬렉션에 접근할 수 있게 된다. enum Dogs: CaseIterable { case hodoo case yulmoo case zandi } let dogList = Dogs.allCases print(dogList) //[workSpace.Dogs.hodoo, workSpace.Dogs.yulmoo, workSpace.Dogs.zandi] for dog in dogList { print(.. 2023. 1. 3.
[TIL] 20230102: MVC, Initialization, 쥬스 메이커, 연결 리스트 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. MVC & SW Architecture/Design Pattern SW Architecture와 SW Design Pattern의 개념은 어디서부터 출발했을까? 객체 지향적인 성격에서 출발 건물 짓는 방식을 SW에서 채택 두 개념은 왜 필요할까? 통일성: 모든 이해관계자들이 이해하고 소통하는 데에 있어서 기본 제공 확장성: 모델들을 잘 정의해 놓을 시 재사용이나 확장에의 용이 두 개념의 차이점? 아키텍쳐 디자인 디자인보다 근본적이고 구조적인 과정 코드 레벨의 공통성 large scale medium scale What we are building How we are building 전체적인 시스템에 관한 것 개별 모듈이나 컴.. 2023. 1. 3.
[TIL] 20221230: Computed Property, Static 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 연산 프로퍼티 Computed Property In addition to stored properties, classes, structures, and enumerations can define computed properties, which don’t actually store a value. Instead, they provide a getter and an optional setter to retrieve and set other properties and values indirectly. 저장 프로퍼티와 같이, 클래스, 구조체 그리고 열거형은 연산 프로퍼티를 정의할 수 있다. 그리고 이것은 값을 저장해주지는 않는다. .. 2022. 12. 31.
[TIL] 20221229: H.I.G, Extension, Enum 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. Human Interface Guidelines(H.I.G) 모달리티 Modality 모달은 화면 전환의 한 방식이다. 네비게이션 인터페이스와는 달리 기존 화면과 연속성이 없을 때 사용한다. 모달로 나타낸 화면은 반드시 어떠한 선택을 해야 사라진다는 특징을 가지고 있다. Extension Extensions add new functionality to an existing class, structure, enumeration, or protocol type. This includes the ability to extend types for which you don’t have access to the original sour.. 2022. 12. 29.
[TIL] 20221227: git reset --hard, namespace, Implicitly Assigned Raw Values 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. git reset --hard 이 방법은 -hard를 사용하므로 최신 커밋 이후로 본인이 working directory에서 했던 작업(아직 커밋을 하지 않은 작업)또한 날려버릴 수 있다. 그러니 주의해야한다. 커밋한 내용을 삭제하고 싶을 때 사용하면 된다. 우선 git reflog를 통해 기록을 살펴보자. 이렇게 기록이 나온다. git reflog를 통해서는 지워진 커밋또한 볼 수가 있다. 이 것을 보고 돌아가고 싶은 시점을 결정하면 된다. 가장 왼쪽의 올리브색 글씨는 commit ID이다. 이전 커밋으로 돌아가고 싶을 때: git reset --hard HEAD~1 두 단계 전 커밋으로 돌아가고 싶을 때: git rese.. 2022. 12. 28.
[TIL] 20221226: 접근제어(캡슐화,은닉화) 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 접근제어 캡슐화 객체의 속성과 행위(메서드)를 하나로 묶는 것을 의미한다. 은닉화 내부 데이터나 연산을 외부에서 접근하지 못하도록 감추는 것을 말한다. 변수에 접근지정자를 private으로 지정한다. 이를 통해 어떤 효과를 얻을 수 있을까? 접근수준 은닉화의 효과를 알기 위해서는 private가 어떤 효력을 가지는 접근수준인지 알아야할 것이다. 키워드 접근수준 접근도 범위 open 개방 접근수준 높음 . . . 낮음 모듈 외부까지 public 공개 접근수준 모듈 외부까지 internal 내부 접근수준 모듈 내부 fileprivate 파일 외부 비공개 접근 수준 파일 내부 private 비공개 접근 수준 기능 정의 내부 ope.. 2022. 12. 27.
[토요스터디A반] 20221224: Optional, throws-throw, do-catch, try-try?-try!, Result 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 옵셔널 Optional 준비된 옵셔널인 값을 출력하는 여러 방법들을 논의했다. 옵셔널에 대해서는 다른 포스팅에서도 다뤘으니 간단하게 짚고 넘어가겠다. 강제 추출 var walkingItemsList: [String?] = ["하네스", "패딩", "리드줄", "똥봉투", "휴지"] var lastIndexOfWalkingItemslist = walkingItemsList.count - 1 print("강제추출") for count in 0...lastIndexOfWalkingItemslist { let product = walkingItemsList[count]! print("\(count)번 상품은 \(product)입니다.. 2022. 12. 24.
[TIL] 20221223: Magic literal/number, Tuple, Recursive Function 본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다. 매직 리터럴/넘버 Magic literal/number Magic literal/number는 의미를 가진 문자나 숫자를 코드에서 그대로 표현한 것을 말한다. 이러한 표현은 코드를 읽기 어렵게 만든다. 이 코드를 짠 나는 알 수 있지만, 다른 사람들은 해당 문자열, 숫자가 무엇을 의미하는지 확신할 수 없기 때문이다. 가능하면, 문자나 숫자를 변수/상수로 선언하여 주고 그것을 사용해주는 것이 좋다. print("안녕하세요.") print("Rhode입니다.") print("당신의 이름을 입력해주세요 : ", terminator: "") 위의 코드는 매직 리터럴 투성이다. 이것을 다음의 코드로 바꿀 수 있다. let greeti.. 2022. 12. 24.