분류 전체보기 67

Nib, Xib

Nib(Next Interface Builder) 화면을 구성하는 클래스들을 바이너리 형태의 압축파일들로 저장하고있는 형태 Xib(Xml Interface Builder) Xml형태로 존재(Nib파일을 컴파일 -> Xml파일) Xcode에선 인터페이스 빌더에서 직접 View를 구성할 수 있도록 제공하고 있다.(storyboard) Xml형태로 코드로 수정도 가능 코드형태기 때문에 SCM에 좀 더 용이하다. Xib가 플랫파일 에 저장된다는 부분을 제외하고는 기능적으로 Nib과 동일 (플랫 파일이란? 아무런 구조적 상호적 관계가 없는 레코드들이 들어있는 파일) 빌드를 하면 xib가 앱에 포함될 nib파일로 컴파일 된다. init(nibName: bundle:) xib로 작성된 Cell을 컴파일하여 bundl..

iOS 기초 2021.12.07

App LifeCycle

App LifeCycle ios12이전의 App LifeCycle 1. main 함수가 실행 2. main 함수는 UIApplicationMain함수를 호출 3. UIApplicationMain함수는 앱의 본체에 해당하는 객체인 UIApplication 객체를 생성한다. 4. nib파일을 사용하는 경우나, Info.plist 파일을 읽어들여 파일에 기록된 정보를 참고하여 그외에 필요한 데이터 를 로드한다. 5. App Delegate 객체를 만들고 앱 객체와 연결하고 런루프를 만드는 등 실행에 필요한 준비를 한다. 6. 실행 완료를 앞두고 앱 객체가 앱 델리게이트에게 application:didFinishLaunchingWithOptions: 메시지를 보낸다. 7. Main run Loop 실행하고 이벤..

iOS 기초 2021.12.07

ViewController LifeCycle

loadView() 뷰를 실제로 생성하여 메모리에 로드 스토리보드나 nib(xib)를 사용하지 않는다면 이 메소드를 오버라이드해서 뷰를 만들고 계층을 구성해야된다. viewDidLoad() 화면을 나오기 위해 여러 프로세싱 처리가 준비가 된 상태 ViewController가 메모리에 로드되고 난 후에 호출됨 뷰의 로딩이 완료되었을 때 시스템에 의해 자동으로 호출됨 한번씩만 호출된다. ​ viewWillApear() 뷰가 계층 구조에 추가되기 직전(화면이 나오기 바로 전인 상태) 또는 해당 뷰가 나타나기위한 애니매이션이 설정되기전 호출 뷰가 화면에 나타나기전 추가작업 수행 가능 view의 레이아웃을 계산하는 시점이 viewDidLoad와 viewWillAppear사이 화면이 다시 나올때도 계속 호출된다. ..

iOS 기초 2021.12.07

ARC(Auto Reference Count)

ARC swift는 Automatic Reference Counting(ARC)를 사용하여 메모리를 추적하고 관리합니다. Swift의 대부분의 경우에서 메모리 관리가 그저 작동 한다는 의미로 직접 메모리를 관리할 필요가 없습니다. ARC는 클래스의 인스턴스가 더이상 필요하지 않을때 클래스 인스턴스에서 사용하는 메모리를 자동으로 해제 합니다. ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동 해제 (컴파일시 작동) 힙에 메모리를 자동적으로 할당할 때 ARC가 메모리를 자동으로 해제시켜 준다. 순환참조가 발생할 시 영구적으로 메모리가 해제되지 않을 수 있음​ Swift이전의 Object-C에선 ARC가 아니라 MRC(Manual Reference Counting)힙에 메모리를 직접 할당/해..

swift 2021.12.07

Strong, Weak, Unowned, 순환참조

Strong(강한 참조) ARC의 개념에서 힙에 인스턴스가 할당될 때 RC(Reference Count)가 +1되는게 강한참조 별다른 선언이 없으면 default가 strong(강한 참조 객체) ​ Weak(약한 참조) 인스턴스 참조할 시 Reference Count값 증가하지 않음 참조 객체가 메모리에서 해제될 시 nil이 할당되어 메모리 해제 ​ Unowned 인스턴스 참조할 시 Reference Count값 증가하지 않음 참조 객체가 메모리에서 해제될 시 nil을 할당 받지 못하고 해제된 메모리 주소 계속 가지고 있음 ​ 순환 참조란? 순환 참조란 두 객체가 서로가 서로를 참조하고 있는 형태 순환참조는 강한(strong) 순환 참조, 약한(weak) 순환 참조, unowned 순환 참조가 존재 합니..

swift 2021.12.07

객체지향의 사실과 오해를 읽고

부스트캠프의 마스터 JK님의 추천으로 이책을 읽게 되었습니다. 책 이름처럼 흔히 생각하는 객체지향의 일반적 사고를 깨주면서 궁극적으로 좋은 소프트웨어를 만들기 위해 어떤 설계와 구조를 가지면서 소프트웨어를 구성해야하는지 소개하고 있습니다. 책에서 아마 가장 많이 나온 말 중에 하나가 역할, 책임, 협력 이 세가지 단어 라고 생각합니다. 객체지향을 설계할 때 객체 자체의 속성과 행동에 중점을 맞추지 말고 객체간의 협력에 중점을 맞춰서 객체가 가져야 할 역할과 역할을 수행하기 위한 책임을 중점으로 책의 내용이 구성되어 있습니다. ​ 보통 객체지향하면 클래스가 우선적으로 생각나고 코드를 작성할 때도 각 객체가 가져야 할 속성과 객체에 필요한 메서드에 중점을 맞춰 구성을 하곤 했습니다. 이런 구조를 가지고 설계..

일상 2021.12.07

Swift언어의 특징

애플에서는 아래와 같은 Swift의 특징을 나타내고 있습니다. 1. 안정성(Safe) Swift에서는 엄격한 문법을 적용하여 프로그래머의 실수를 방지합니다. 특히 nil이라는 옵셔널 타입을 사용하여 컴파일 타임의 오류를 방지합니다. 또한 guard 구문, 오류처리, 강타입언어등 안정성있는 프로그래밍을 지향하고 있습니다. 2. 신속성(Fast) Swift는 C와 Objective-C의 계승자로써 Low-Level의 타입, 흐름제어, 연산자등을 포함하고 있으며 클래스, 프로토콜, 제네릭 타입같은 객체 지향 기능도 제공합니다. 3. 소스 및 바이너리 호환성(Compatibility) Swift5를 사용하면 새로운 버전의 컴파일러를 사용하기 위해 Swift4코드를 수정할 필요가 없다. 또한 Swift5는 앱에 ..

swift 2021.12.07