20110628 :: iOS5 SDK의 새로운 기능들

iOS5는 알림센터와 같은 새로운 사용자 환경이 추가되었지만, 새로운 형태의 앱을 더욱 쉽게 개발할 수 있도록 하는 새로운 기능들이 추가되었다.

iCloud Storage APIs

 

  • 클라우드 저장소인 iCloud를 통해 사용자의 파일을 저장하거나 (iCloud document storage) 사용자의 정보를 애플케이션간에 공유하는 (iCloud key-value data storage) 방법이 생겼다. iOS 및 OSX는 싱크 데몬을 제공하며 이를 통해 앱은 iCloud 환경에 있는 문서를 손쉽게 액세스할 수 있도록 한다.싱크 시 버전 충돌을 해결하기 위한 방법도 제공하고 있다.
  • 키-밸류 데이터를 iCloud에 저장하여 다른 디바이스나 다른 맥에서 동작하는 어플리케이션에게 데이터를 전달할 수 있다. 키-밸류 쌍의 최대 크기는 64KB이며 단일 키의 최대 크기는 4KB를 초과할 수 없다. 이는 NSUbiquitousKeyValueStore 클래스에 의해 제공된다.

 

iCloud Backup

 

iOS5는 iCloud를 통한 자동 백업을 사용할 수 있다. 샌드박스내의 도큐먼트 폴더내의 자료는 자동으로 백업된다.

 

자동 참조수

Objective-C 컴파일러에의해 객체의 참조수는 자동으로 관리된다. 따라서 retain, release, autorelease, dealloc 의 기능은 사용해서는 안된다. 또한 커스텀 retain, release 기능을 구현할 수 없다.

 

  • C구조체 내에 객체의 포인터를 저장하지 말 것
  • 객체와 객체가 아닌 자료형사이에 강제 캐스팅을 하지 말 것
  • NSAutoreleasePool 객체를 사용하지 말 것. 대신에 @autoreleasepool 키워드를 사용하여 오토릴리즈 블럭을 사용할 수는 있다.

Objective-C 컴파일러는 개발자에게 객체 그래프를 생각하고 사용하기를 권장한다. 즉 객체간의 관계를 생각해야지 리테인/릴리즈에 대해서 생각하지 않는 것이다. 이 점에서 ARC는 약한참조제거라는 개념을 포함한다. 즉 약한참조제거의 값은 객체가 해제된 지점을 가리키고 있을 때 nil의 값을 갖는다. 변수는 weak, strong 이라는 새로운 선언 속성값을 갖는다.

 

@property (strong) MyClass *myObject;

@property (weak) MyOtherCloass *delegate;

 

(각각, retain, assign에 대응하는 선언 방식이다)

 

 

스토리보드

 

iOS5에서 개발툴의 가장 큰 변화이다. 메인 nib 파일을 대체하는 스토리보드는 프로그램의 모든 화면 UI를 포함하고 어떤 뷰에서 어떤 뷰로 이동할 수 있는지를 지정하고 그 관계를 그래프로 나타내준다. 뷰간의 이동은 performSeaueWiehIdentifier:sender: 를 통해서 발생하며, 이는 화면 아울렛을 통해 지정이 가능하다.

 

기존 iOS4에서는 새로운 뷰로 이동하기 위해서는 해당 클래스의 인스턴스를 만들어 네비게이션 컨트롤러의 제어를 통했으나, 현재는 스토리보드상에서 모든 작업을 할 수 있다. 즉, 정보를 나열하고 보여주는 브로슈어 앱의 경우에는 IB만 사용하여 완전한 구현이 가능하다.

 

새로운 프레임워크

 

GLKit

오픈GL을 쉽게 다룰 수 있도록 하는 GLKit.

 

CoreImage

비디오와 스틸이미지를 변형하는 파워풀한 필터를 제공한다. 이미지를 보정하는 작업을 할 수 있으며, 얼굴 인식등의 기능도 제공한다.

 

트위터

트위터가 프레임워크로 통합되었다.

 

계정 프레임웍

싱글 사인온을 지원하는 프레임웍

 

일반보안서비스(GSS)

파일보안과 관련된 서비스

 

애플리케이션 디자인 레벨의 개선

UIDocument 클래스 지원.

  • 백그라운드에서 데이터를 비동기적으로 읽고/쓰는 것이 가능하며, 읽고 쓰는 동안에도 사용자의 터치에 반응할 수 있다.
  • iCloud 저장소내의 문서에 접근하는 것이 가능하다.
  • 쓰기 캐시를 지원하여 안전한 파일 쓰기를 지원
  • 파일 쓰기 중 버전 충돌에 대한 해결책 지원
  • 특정 시점에 자동 저장 기능
  • 플랫파일/패키지 파일 지원
  • 코어데이터를 사용하는 앱을 위해 UIManagedDocument 서브 클래스가 지원된다.

 

데이터 보호 개선

UIKit 컨트롤의 커스텀 객체

-대부분의 객체 (툴바와 네비게이션 바, 검색바, 슬라이더 등)의 색상과 배경 이미지, 타이틀 위치를 옮길 수 있다.

– 어떤 객체들은 직접 변경하며 어떤 객체들은 외양 프록시를 통해 기본값을 지정할 수 있다.

외양 프록시는 기본값을 변경하도록 해주는 객체이다.

 

컨테이너 뷰 컨트롤러

컨테이너 뷰는 다른 뷰 컨트롤러를 담는 뷰 컨트롤러인데, UINavigationController, UITabBarController, UISplitViewController 를 말한다. 이러한 뷰 컨테이너가 제공하는 컨텐츠들을 조합하여 다른 컨테이너 뷰 컨트롤러를 만드는 것이 가능하다. 컨테이너 뷰는 뷰컨트롤러의 부모로서 동작하며, 각각의 뷰 컨트롤러에 메시지를 보낼 수 있다.

 

페이지 기반 애플리케이션

책자와 같은 형태로 책장을 넘기며 동일한 템플릿 내에 데이터가 바뀌어 표시되는 형태의 앱을 쉽게 만들 수 있게 되었다. UITableView와 마찬가지로 datasource를 이용하여 책의 내용을 구성하는 것이 가능하다.