iOS 5에서는 더 이상 "retain"및 "release"가 지원되지 않습니다. 대신에 "강한" "약한"이 새로운 방식입니다.iOS5 @property changes
아이폰 OS 4 코드 :
@property(nonatomic, retain)
@property(nonatomic, assign)
에서 iOS 5 코드 :
???
???
iOS 5에서는 더 이상 "retain"및 "release"가 지원되지 않습니다. 대신에 "강한" "약한"이 새로운 방식입니다.iOS5 @property changes
아이폰 OS 4 코드 :
@property(nonatomic, retain)
@property(nonatomic, assign)
에서 iOS 5 코드 :
???
???
. "에서 iOS 5에서, 릴리스를 유지하는 것은 더 이상 지원되지 않습니다" ARC를 사용할 때와는 다릅니다.
ARC를 사용할 때 -[<NSObject> retain]
은 아무 작업도하지 않습니다.
속성의 경우 ARC를 사용하는 경우 strong
을 사용할 수 있지만 필수는 아닙니다 (원하는 경우 retain
도 사용할 수 있음). strong
및 retain
은 동일합니다 :
@property(nonatomic, strong)
@property(nonatomic, assign)
그냥 당신이 (같은 프로젝트에 strong
및 retain
모두를 사용하지 않는) 일치해야합니다. 그들은 동일하지만하지
기본적으로 retain := strong
및 assign := weak
나는 다른 스레드가이 개체에 액세스하려고하면 개체가 의미하는 스레드로부터 안전하지 않습니다 것을 ARC Release notes
사실,'assign'은'weak'보다'unsafe_unretained'에 더 가깝습니다. 약한 속성 지정은 새로운 개념입니다. –
약점은 int와 같은 기본 유형에는 작동하지 않습니다. 할당을 사용해야합니다. –
nonatomic
속성 상태에서 살펴 본다 제안 나쁜 일이 일어날 수 있지만 이것은 원자 속성보다 훨씬 빠릅니다.
strong
은 ARC와 함께 사용되며 기본적으로 개체의 보유 수에 대해 걱정할 필요가 없으므로 도움이됩니다. ARC는 작업이 끝나면 자동으로 해제합니다. 키워드 strong
을 사용하면 개체를 소유하고 있음을 의미합니다.
weak
소유권은 소유자가 아니며 두 번째 객체가 놓아 지자 마자 할당 된 객체가 손실 될 때까지 객체를 추적한다는 것을 의미합니다. 예를 들면. obj.a=objectB;
이 사용되고 a는 약한 속성을가집니다. 그 값은 objectB가 메모리에 남아있을 때까지만 유효합니다.
copy
숙박 시설은 아주 잘 당신이 도움이 희망 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1
의 "선언 속성"섹션을 읽어 ... 하나의 객체에 사용할 수 없도록 https://stackoverflow.com/a/5002646/919545이
strong,weak,retain,copy,assign
는 상호 배타적 여기에 설명 조금 밖에 ...
BTW Objective-C 팀은 이전 코드와 하위 호환이 가능하도록했습니다. –
strong/retain 모두 사용하지 않는 심각한 이유가 있습니까? 가독성에 대한 우려입니까? –
@craig 기본적으로. ARC를 처음 접하는 사람들에게는 혼란을 줄 수 있다고 생각합니다. –