在以下示例中,是否需要行NSObject *_propertyName;
?
.h
@interface ClassName
{
NSObject *_propertyName;
}
@property (nonatomic, retain) NSObject *propertyName;
@end
.m
@implementation ClassName
@synthesize propertyName = _propertyName;
@end
我发现,如果我排除NSObject *_propertyName;
,但保留@synthesize propertyName = _propertyName;
,一切都可以。下面是我所说的一个例子:
.h
@interface ClassName
@property (nonatomic, retain) NSObject *propertyName;
@end
.m
@implementation ClassName
@synthesize propertyName = _propertyName;
@end
我已经测试过了,发现这处房产仍然有效。我几乎总是看到包含行NSObject *_propertyName;
的代码。我这里缺什么了吗?
您没有遗漏任何内容。从较新的运行时(较新的iOS模拟器、x86_64和ARM)开始,您不再需要手动声明ivar。在此之前,在i386和PPC上,您必须手动申报您的ivar。