Size Class

단일 스토리보드를 사용할 수 있도록 한다.

X Code6에서 지원하는 iOS8기능

정확한 포인트의 사이즈 보다 규모가 중요하지 않나?

Compact가 작은 사이즈, Reaular가 큰 사이즈

코딩의 유연성 & 유지 보수의 편리성



Regular일때와  Compact일때 각각 다르게 나타나게 할 수 있다.

아이폰 6 Plus만 Landscape일때만 Regular로 나온다.


Universal Project 

: 아이폰과 아이패드, 아이폰 6등을 모두 지원하는 프로젝트.

Storyboard가 두개 일뿐이다.


 Visual Format


저장

1. NSUserDefault

  : 환경설정, NSMutableDictionary가 Global로 되어 있는 것이라고 보면 된다.

2. Serialize

 : 참조에 대한 정보와 뮤터블 속성등을 저장하지는 않는다.

3. Archiving

 : NSCoding 프로토콜을 준수하는 오브젝트만 아카이브를 지원한다. (UIDocument를 사용하면 된다)

4. CoreData

 : SQLite를 사용하여 저장한다.


위에 모든 저장 방식은 iCloud로 올라 갈수 있다.


NSCoding을 준수하기 위해서는 다음과 같이 한다. 선언부에 NSCoding을 따른다고 하면 아래와 같이 따라야 할 규약들이 warning으로 뜬다.



아래와 같이 encodeWithCoder에 저장할 값을 설정하고, initWithCoder에서 가져다 쓴다.


아래는 Object를 encoding 하는 방법이다.  아래의 방식은 _taskArray 를 사용하면 객체가 사라질 수 있다.(ARC 때문이라고 함). 이럴때는 self.taskArray를 사용하여야 한다. alloc을 사용하지 않은 객체는 릴리즈 된다.



Fast App Switching

아이폰에서는 not runnig과 active 두가지 였다. 하지만 사용자 요구 등에 따라 background mode라는게 생겼다.

forground 상태는 inActive를 거쳐서 active상태로 가고, 나올때도 inActive를 거쳐서 나온다.

inActive상태는 사용자의 action을 받을 수 없는 상태이지만 forground 에 있는 상태이다.(문자, 전화 등이 왔을 경우)

이것을 active로 가거나 background로 갈 수 있는 준비 상태라고 볼 수 있다. 

Background는 suspend와 Running 두가지 모드가 있다. 일반적으로 Suspend로 빠지지만 음악 등과 같이 Running으로 동작하는 것도 있다.

일반적으로 Running에 있어도 특정 App을 종료하지 않으면 Suspend모드로 빠지거나 Not Running 상태로 간다.

Suspend에  있어도 memory 관리에 의해 Not Running상태로 빠지기도 한다.

* Su

AppDelegate

AppDelegate는 항상 만들어 진다. 

Delegate는 SubClass를 사용하지 않기 위해서 만들어진 클래스라고 한다. 즉, 일반적으로 사용하는 것들은 Delegate에 만들어 놓고 Delegate에 등록해 놓으면 Delegate가 등록된 함수를 불러 주도록 되어 있다.

위의 LifeCycle에서  Application의 각 상태의 이동에 따라 Delegate를 제공하는 것이 AppDelegate이다.

UIApplicationDelegate에서는 다음과 같은 Delegate함수를 제공한다.


 Appdelegate는 Application의 Window를 통해 접근 할 수 있다.


Archive로 저장하고 가져오기

pomoCycle을 가져오는 코드는 아래와 같다.


저장하는 코드를 만들고 Terminate할때와 Background로 들어갈때 호출해 준다.



아이클라우드 백업

 사용하지 않아도 정책을 지켜야 한다. (나의 테이터가 모두 백업 됨으로)

파일 크기 제한

Document Storage: iCloud의 용량 제한

Key Value Data Storage: 1024K


싱크 시점

Document Storage: 변경사항이 있을때 iCloud가 file metadata를 pull 한다. 장치들은 file metadata만을 pull하고 실제 파일 다운로드는 사용시점에 한다.

Key Value Data Storage:



filtersafari.zip


filtersafari_icloud.zip


Block 과 GCD

멀티코어 시대에 접어 듬에 따라 Block을 통하여 멀티 코어를 사용할 수 있다.

블럭의 변수는 선언 되는 순간 코드가 복사된다. 따라서 내부 변수가 변경되어도 선언된 순간의 변수를 사용된다.

이를 피하기 위해서는 __block int x = 8; 과 같이 선언하면 블럭 내부에서 변경된 값을 사용할 수 있다.

(https://github.com/CodersHigh/TutorialExamples) 예제 사용용


Swift

let 으로 선언한 변수는 변경할 수 없다.

var로 선언한 변수는 변경할 수 있다.

기본적으로 var str:String과 같이 선언해야 하지만 :String을 삭제해도 컴파일러에서 값을 보고 추론해준다.


Function 과 Closer


Optional

var str:String = nil을 하면 에러가 발생한다.

var str:String? = nil하면 Optional을 선언하고 조심해서 사용할 것을 권고한다. 

그리고 Optional Binding을 제공한다.



?를 사용하면 nil일 수도 있다고 경고 하는 것이다.


Function Type

함수가 하나의 타입이 될 수가 있다. 함수가 함수를 리턴할 수도 있고, 입력 값으로 사용할 수도 있다.

즉, 1급함수가 된다.

var mathFunction: (int, int)->int = 함수수


Posted by 빨간 양말