ARC를 사용한 @property 정의 : 강하거나 유지합니까?
Xcode 4.2 및 ARC를 사용하면 자동 생성 코드 NSManagedObject
가 속성에 대해 다음과 같이 읽히는 것을 알 수 있습니다.
@property (nonatomic, retain) NSString * someString;
1) retain
이제 strong
또는 로 바꾸면 안 weak
됩니까?
2) 자동 생성 코드가 여전히 사용하는 이유 retain
3) retain
이 속성 설명에서 올바른 대체는 무엇입니까 ?
현재를 사용하여 문제를 디버깅 중이며 이것이 문제 NSFetchRequest
의 원인 일 수 있다고 생각했습니다. 생각?
1) 유지는 이제 강하거나 약한 것으로 대체해서는 안됩니까?
아니오. 보유를 약한 것으로 대체 할 수 없습니다. 그들은 달라. 그리고 strong은 보유의 100 % 동의어입니다. 그들은 동일합니다. 둘 중 하나를 사용할 수 있으므로 여기에 "should"가 없습니다. 원하는 경우 유지를 strong으로 바꿀 수 있지만 반드시 그럴 필요는 없습니다.
2) 자동 생성 된 코드가 여전히 유지를 사용하는 이유
왜 안돼? (1) 참조. 유지가 정확하므로 문제가 없습니다.
3)이 재산 명세서에서 유보에 대한 올바른 대체는 무엇입니까?
유지를 교체 할 필요가 없습니다.
현재 NSFetchRequest를 사용하여 문제를 디버깅 중이며 이것이 문제의 원인 일 수 있다고 생각했습니다. 생각?
그렇지 않습니다.
하나에서 세 가지 질문에 대답하려면 다음 retain
과 strong
모두가 올바른지, 그래서 서로 동의어입니다. 문서 상태
retain
__strong
소유권을 의미
strong
__strong
소유권을 의미
ARC 이전에 유지되는 객체를 '해제'해야합니다. 즉, 보유에는 반대 부분이 있습니다. ARC 이후에는 해제 할 필요가 없습니다. 따라서 강력하게 사용하십시오. 릴리스를 호출 할 필요가 없다는 시각적 단서입니다.
"retain"은 "strong"과 같습니다.
예를 들어 "strong"이 사용됩니다.
@property (nonatomic, strong) NSString * someString;
예를 들어 "__strong"이 사용됩니다.
-(void) someMethod
{
__strong NSString* vStr = [[NSString alloc] initWithString:@"some string"];
}
Apple 문서에서. 말한다 :
속성 속성
다음 예제와 같이 weak 및 strong 키워드가 새로 선언 된 속성 속성으로 도입되었습니다.
// The following declaration is a synonym for: @property(retain) MyClass *myObject;
property(strong) MyClass *myObject;
참고 URL : https://stackoverflow.com/questions/7796476/property-definitions-with-arc-strong-or-retain
'your programing' 카테고리의 다른 글
서비스 의도를 시작할 수 없습니다. (0) | 2020.10.07 |
---|---|
Java : 명령 줄 인수가 null인지 확인 (0) | 2020.10.07 |
모듈을 여러 파일로 분할 (0) | 2020.10.07 |
Gradle 버전 1.10이 필요합니다. (0) | 2020.10.07 |
요소를 주문하는 모범 사례는 무엇입니까? (0) | 2020.10.07 |