有时候,在引入弧之前,我没有使用@property声明,只使用iVar,如下所示:
//Foo.h
@interface Foo : NSObject
{
NSString *str;
}
- (id)initWithStr:(NSString *)newStr;
..
//Foo.m
- (id)initWithStr:(NSString *)newStr
{
if(self = [super init])
{
str = [newStr retain];
}
return self;
}
- (void)dealloc
{
[str release];
[super dealloc];
}
...
如果我不想使用@property
声明,如何使用ARC实现类似的功能?
答案 0 :(得分:3)
ARC正常运作:
- (id)initWithStr:(NSString *)newStr
{
if(self = [super init])
{
str = newStr;
}
return self;
}
...而且没有dealloc:)
答案 1 :(得分:-1)
在.h文件中声明str。
@property (nonatomic, strong) NSString *str;
您可以合成此变量。像@sythesize str;
您可以使用self.str
分配或获取str
。
有关详细信息,请阅读this document。