현재 ARC를 사용하는 현재 iOS 프로젝트를 리팩터링하려고합니다. 그리고 "Refactor to ARC"도구를 사용하여 현재 코드를 ARC로 마이그레이션하기위한 변경 사항을 미리 본 후 xCode를 사용하면 현재 코드 규칙이 ARC에 적합하지 않을 수 있습니다. 왜냐하면 그것은 __weak/__strong 등등을 내 ivars에 많이 추가했기 때문입니다.ARC를 사용하는 Objective-C 속성
내 현재의 규칙은 Heres는 방법 :
내가 개인 또는 보호 된 인스턴스 변수 등 모든 인스턴스 변수를 정의합니다. 모든 공용 변수는 @property를 만듭니다.
@interface TestClass
{
@private
NSMutableArray* mArray;
NSString* mString;
BOOL mMyBoolean;
}
@property (retain, nonatomic) NSString* string; // public
@end
모든 개체를 항상 다시 @property와 난, 난 그냥 구현의 범주를 만들, 내가 참조입니다 개인 변수가 있다면 그렇게 유지/해제를 처리 방지 할 수 있습니다. 구조체 (예 : mMyBoolean) 저는 정의를 ivar로 남겨 둡니다.
@interface TestClass()
@property (retain, nonatomic) NSmutableArray* mArray;
@end
@implementation TestClass
@synthesize string = mString;
@synthesize mArray;
@end;
그러나 새로운 ARC 릴리스/유지 돌보는 때문에 내가 제대로 private 변수를 필요가없는
는 @property에 의해 뒷받침된다.그래서 어떤 코드 규칙이 더 적절할까요? 필자는 다음과 같은 인터페이스에서 속성을 정의에 대해 생각하고 :
@interface TestClass
{
@private
NSMutableArray* mArray;
BOOL myBoolean;
}
@property (strong, nonatomic) NSString* string;
@end
@implementation TestClass
@synthesize string;
@end
그리고 개인 속성에 대한 이용 카테고리의 속성을 해달라고. (또한 "m"접두어를 제거한) @property가 사용해야하는 백업 ivar을 정의하지 않고 대신 xcode가 자동 생성되도록 사용하겠습니까?
+1하기 때문에 일관되게. ARC를 사용하면 직접 ivars 및 속성을 혼합하고 일치시킬 수는 있지만 조금 추울 수 있습니다. – jrturton
고맙습니다! 나는 abit abstract 일 수있는 질문을 썼을 때 알고 있었지만 나는 당신이 대회의 실제적인 생각을 요약 한 훌륭한 일을했다고 생각한다. –