答案 0 :(得分:2)
如果你的实例变量和属性具有相同的名称,那么比调用“[myvar]”时要比调用方法“myvar”,如果你只调用“myvar”而不是直接询问实例变量。对于更好地调用方法(使用self)的属性,因为在内部方法“myvar”可以实现一些特定的东西(即内存管理,验证)。
更好理解的例子:
@interface Possession : NSObject <NSCoding> {
NSArray *myArray;
}
@property (nonatomic, retain) NSArray *myArray;
- (void)someMethod;
@end
@implementation
@synthesize myArray; // this line adds two methods: "myArray" and "setMyArray:"
- (void)someMethod {
NSArray *firstArray = [NSArray arrayWithObject:@"test1"]; // autoreleased
self.myArray = firstArray; // it is ok. this new array will be
// retained in property's implementation of setMyArray
NSArray *secondArray = [NSArray arrayWithObject:@"test2"]; // autoreleased
myArray = secondArray; // memory leak here!!!! because previous value of myArray
// wasn't released and new value not retained. it means
// that when run loop finished you will lose your array
}
@end
答案 1 :(得分:2)
self用于访问当前类方法和变量,但它应该声明为属性,就我所关注的而言self表示当前类object.example如果我们在一个类中有一些方法 - (void)showData而我们喜欢调用那个方法我们把代码编写为[self showData],如果有一些带有正确定义属性和合成的变量示例string * name,我们将该变量称为self.name
答案 2 :(得分:0)
据我所知,self表示当前的类对象。例如,如果要调用当前类中的任何方法,则使用[self somemethodname];
如果你想使用声明为属性的当前类变量,那么你可以将这些变量称为self.somevariablename = @"ffs";