了解自我的使用

时间:2011-11-04 07:37:29

标签: iphone objective-c ios xcode

  

可能重复:
  Objective-C - When to use 'self'

我在理解自我的使用方面遇到了问题。

什么时候必须使用它?

任何人都可以向我解释一下吗?

非常感谢。

3 个答案:

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