일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 스위프트
- enum
- Unicode
- instance
- property
- interpace
- extension
- Terminal
- 이니셜라이저
- Protocol
- tuist
- delegate
- struct
- url
- init
- type
- IOS
- Xcode
- String
- initalizer
- Class
- 코딩테스트
- Git
- Swift
- Method
- UIKit
- Foundation
- initializer
- 디자인패턴
- optional
- Today
- Total
목록2021/10/20 (4)
아리의 iOS 탐구생활
# Model 앱이 정확히 무엇을 할지 코딩하는 것이다. 비즈니스 로직을 담당하는 함수들이 정의되고, 처리되는 데이터(클래스, 구조체 등)와 내부 알고리즘이 정의된다. # View 사용자에게 말 그대로 보여지는 영역으로 볼 수 있다. Storyboard 파일을 비롯해서 인터페이스를 구축하는 영역으로 생각하면 될 것 같다. # Controller Model 과 View 사이의 다리라고 보면 된다. Controller는 Model이 가지고 있는 데이터를 어떻게 할 것인지 명령을 내린다. 그리고 이 명령을 토대로 사용자에게 보여지는 인터페이스 부분도 수정을 한다. 보통 여기서 @IBAction 함수들이 정의된다. 즉 사용자가 View를 통해 Interaction을 하면 Controller가 이를 control..
# Design Pattern 설계할 때 자주 쓰이는 템플릿 선배들의 삽질 기록 코드의 모양새 디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다. ## 사용 이유 디자인 패턴을 참고하여 개발할 경우 효율성과 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움이 된다. OOP의 다양한 문제 상황에 대한 예방 프로그래머 사이의 협업 효율 향상 프로그래머 사이의 의사소통 증진 코드의 안정화 및 최적화 코드의 재사용성 증가 주어진 패턴을 상황에 맞게 변경을 해서 사용해야 하는데 디자인 패턴에 집착하게 되면 유연하게 패턴을 적용 및 변경을 못하게 된다. 따라서 100퍼센트 지킬 필요는 없지만 명확하게 알아두면 쓸 일이 많다. # Arch..
KVO는 A객체에서 B객체의 프로퍼티가 변화됨을 감지할 수 있는 패턴이다. Notification이 주로 Controller와 다른 객체 사이의 관계를 다룬다면 KVO는 객체와 객체 사이의 관계를 다루는데 적합하다. 메소드나 다른 액션에서 나타나는 것이 아니라 프로퍼티의 상태에 반응하는 형태이다. 객체의 프로퍼티의 변경사항을 다른 객체에 알리기 위해 사용하는 코코아 프로그래밍 패턴 Model과 View와 같이 논리적으로 분리된 파트간의 변경사항을 전달하는데 유용함 NSObject를 상속한 클래스에서만 KVO를 사용할 수 있다. 장점 두 객체 사이의 정보를 맞춰주는 것이 쉽다 New / old value를 쉽게 얻을 수 있다. KeyPath로 옵저빙하기 때문에 nested objects도 옵저빙이 가능하다..
싱글턴 객체중 하나이므로 이벤트들의 발생 여부를 옵저버를 등록한 객체들에게 Notification을 post하는 방식으로 사용한다. Notification Name이라는 Key 값을 통해 보내고 받을 수 있다. 장점 많은 줄의 코드가 필요없이 쉽게 구현이 가능하다. 다수의 객체들에게 동시에 이벤트의 발생을 알려줄 수 있다. Notification과 관련된 정보를 Any? 타입의 object, [AnyHashable : Any]? 타입의 userInfo로 전달할 수 있다. 단점 key 값으로 Notification의 이름과 userInfo를 서로 맞추기 때문에 컴파일시 구독이 잘 되고 있는지, 올바르게 userInfo의 value를 받아오는지 체크가 불가능 하다 추적이 쉽지 않을 수도 있다 Notifica..