source : iPhone iOS 6 Development Essentials
최근 iOS 6 SDK 에서 변경된 주요 내용 몇가지 요약.
개발자의 스트레스를 제법 많이 줄여줄만한 내용들이니 주목할 것.
1. Default Property Synthesis
더이상 @synthesize 구문을 사용할 필요가 없다는 건 많이들 알 것이다.
이젠 디폴트로 잡히므로, 다음처럼 instance 변수에 접근 가능하다.
_volumeControl.enable = YES;
2. Method Ordering
메서드 정의 순서를 말함. 이전에는 함수 호출 이후에 해당 함수 구현이 있으면 컴파일 에러를 뱉었는데, 이제는 더이상 문제되지 않는다고 함.
3. NSNumber Literals
이제 다음과 같이 넘버타입 리터럴 값들을 할당할 수 있다.
NSNumber *number;
number = @'A'; // Character
number = @YES; // Boolean
number = @43231ul // Unsigned Long
number = @123431ll // Long Long
number = @1254.23 // Float
number = @123 // Integer
number = @123.432 // Double
4. Array Litterals
배열 초기화 길고 지루했던 타이핑도 줄었다.
NSArray *carMakes = @[@"Hyundai", @"Chevy", @"BMW", @"Toyota", @"Volvo", @"Smart"];
또한 배열인덱스로 접근하는 것도 훨 수월해짐.
NSString *firstCar = carMakes[0];
carMakes[1] = @"Kia";
기본적으로 이 리터럴 초기화는 수정할 수 없는 배열이다. (immutable)
수정 가능한 배열로 뽑아내려면 다음과 같이 mutableCopy 사용하자.
NSMutableArray *carMakes = [@[@"Hyundai", @"Kia"] mutableCopy];
5. Dictaionary Literals
가장 자주 쓰는 딕셔너리도 역시 가볍게 바뀌었다! 쥐기네~
NSDictionary *bookListing = @{key1:object1, key2:object2, key3:object3};
bookOjbect = bookListing[key1];
bookListing[key2] = newBookObject;
6. 요약
전체적으로 코드가 읽기 수월해지고, 프로그래머의 타이핑 수가 현저히 줄었다.
property는 간단하게 GET, SET, 등 용도를 맞추어 주는건데요, 여기서
답글삭제self.instance랑 instance랑 다른점은?
전자는 property를 거치는거구요 후자는 direct access하는 겁니다.
property는 경우에 따라서 필요가 없을 수도 있지만, 해당 클래스의 instance를 업어올때 어떤 목적으로 쓰일 것이냐에 따라서 틀립니다. 예)@property(retain)NSObject instance; 요래버리면 instance를 씌울때 retain이 +1 되구요. 이 property의 retain없이 쓰겠다?! 그럼 instance 씌우면서 해당 오버젝트를 메뉴얼하게 retain 시키는 거구요. class.instance = inst; [inst retain];. 그리고 이 property를 쓰면 당연히 .m에서 synthesis 선언해주어야하구요. 고로, synthesis 편리한거다 이거구요.
소중한 덧글 감사합니다.
삭제리테인 카운트 신경 안쓰고 쓸수 있는 ARC 모드 많이들 쓰시는 거 같던데요.
그래도 아직은 메뉴얼하게 개발자가 릴리즈를 책임질 수밖에 없는 환경인지..
참, @synthesize 는 Xcode 4.5 버전부터는 명시적으로 해줄 필요가 없는걸로 아는데요. 아닌가요?
아무튼~ 프로퍼티의 소중함을 다시 한번 일깨워 주신 Yoon님 감사드립니다.