iOS变量名称和内存管理

时间:2012-05-11 09:53:36

标签: iphone objective-c ios

我对下划线命名和自我感到有点困惑。以下代码可以吗?

@interface MyClass()

@property (nonatomic,retain) NSString        *name;
@property (nonatomic,retain) NSString        *surname;

@end

@implementation MyClass
@synthesize name = _name;
@synthesize surname = _surname;

然后,当我需要指定一个值时,我这样做

self.name = [someParam retain];

3 个答案:

答案 0 :(得分:2)

不,这不行,因为self.name也将保留您在属性中声明的值。

这将保留:

self.name = someParam;

其他方式写入相同(请注意释放当前var):

if (_name != someParam) {
    if(_name) {
       [_name release], _name = nil;
    }
    _name = [someParam retain];
}

答案 1 :(得分:1)

你不必重复保留:)

只是:

self.name = someParam;

但其余的我认为没关系

答案 2 :(得分:0)

这不是正确的,因为您必须使用alias _name之类的

if(_name)
{
    [_name release];
    _name=nil;
}
else
{
    //retain the object
}