为什么要用'自我'。什么时候不被迫?

时间:2010-11-08 01:26:00

标签: iphone objective-c

我注意到我编码的方式(严重;))与我从其他人看到的代码之间存在差异。

任何人都可以解释为什么我看到有人使用

self.varname.anotherpropertie

varname.anotherpropertie

似乎也能正常工作。我不用自己。在我的代码中很多。我想知道这是非常糟糕的还是有些东西我需要学习才能理解为什么它被大多数人用得那么多?

再次感谢, -code

2 个答案:

答案 0 :(得分:6)

他们是不同的东西。在一个类中,您有一个名为foo的实例变量,其声明属性也称为foo,只需编写foo即可访问实例变量,而self.foo则通过getter方法获取属性(可能只返回实例变量,或者它可能会做更多)。

我建议您查看Apple Declared PropertiesThe Objective-C Programming Language一章,详细了解它的工作原理以及何时选择哪个选项。

答案 1 :(得分:2)

我遇到的一个问题是保留与非保留属性。

所以如果你有这样的保留属性:

@property (nonatomic, retain) NSString* myStr;
@synchronized myStr;

你做了这样的事情:

- (void) myMethod:(NSString*)inStr
{
    myStr = inStr;
}

在此示例中,您不会实际保留字符串,因为未调用您的属性。如果更改赋值行以使用该属性(通过使用“self。”),则将保留该字符串(如果非零则将释放前一个字符串)。

self.myStr = inStr;

需要一些习惯,这些属性是方法调用,但一旦你开始看到它们,那么“自我”。语法变得更加清晰。希望有所帮助。