是@synthesis propertyName=_propertyName;的属性所需的ivar;



在以下示例中,是否需要行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。

相关内容

最新更新