从MRC到ARC

时间:2012-08-31 11:43:39

标签: iphone objective-c ios macos automatic-ref-counting

有时候,在引入弧之前,我没有使用@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实现类似的功能?

2 个答案:

答案 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