[objective-c] 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를 사용하여 문제를 디버깅 중이며 이것이 문제의 원인 일 수 있다고 생각했습니다. 생각?

그렇지 않습니다.


답변

하나에서 세 가지 질문에 대답하려면 다음 retainstrong모두가 올바른지, 그래서 서로 동의어입니다. 문서 상태

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;

Apple doc. http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html


답변