在ARC项目中工作时,使用实例变量(在接口上声明),它们的@property
和@synthesize
的正确方法是什么?我现在做的是以下几点:在ARC中使用实例变量/属性/合成的正确方法
SomeClass.h:
@interface SomeClass : NSObject {
NSString *someString;
}
@property(nonatomic, copy) NSString* someString;
和SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
self.someString = @"Foobar";
}
的事情是,有一些作品,如仅使用其他方法@属性:
SomeClass.h:
@interface SomeClass : NSObject
@property(nonatomic, copy) NSString* someString;
访问someString
不self
:
SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
someString = @"Foobar";
}
等我是新来的Objective-C,我已经习惯了的Java。那么使用属性的正确方法是什么?我知道特殊情况会有特殊的行为,但一般情况下最好的办法是什么? (一般我的意思是我想从类本身和“外部”访问变量,我希望ARC仍然正常工作,例如,我不必担心内存泄漏)
只需定义属性。如果你使用Xcode 4.5+,你甚至不需要合成语句。这被认为是正确的方式,因为属性会自动创建iVar。如果您需要使用iVar,那么如果在Xcode 4.5+中,在属性名称前面使用“_”(因为它们是自动创建的),如果不是,则创建它们,如下所示:@synthesize variable = _variable; – Petar 2013-03-13 11:59:02
@ pe60t0实际上在Xcode 4.4中引入了不再需要使用'@ synthesize'语句的需求。 – 2013-03-13 12:08:32
我的不好,现在无法编辑评论。 – Petar 2013-03-13 12:13:08