_variable&和?之间的区别是什么? Objective-C中的self.variable?

时间:2013-02-28 07:23:23

标签: objective-c variables ios6

我对Objective C和iOS很陌生,目前正在尝试使用iOS 6 SDK学习应用程序开发。我真的无法理解的一个概念是在.m文件中访问时“_variable”和“self.variable”之间的区别。它们是一样的吗?还是不同的?

以下是一个简单的样本

MyClass.h

#import <Foundation/Foundation.h>

@interface MyClass : NSObject
@property (strong, nonatomic) NSString *myName;
@end

MyClass.m

#import "MyClass.h"

@interface MyClass ()
@property (nonatomic, strong) NSString *anotherName; 
@end

@implementation MyClass
- (void) myFunction {
    _myName = @"Ares";
    self.myName = @"Ares";

    _anotherName = @"Michael";
    self.anotherName = @"Michael";
}
@end

上述实现设置变量是否存在差异? 变量“myName”为Public,而“anotherName”为Private。

非常感谢任何投入。谢谢!

1 个答案:

答案 0 :(得分:14)

区别在于:

_的变量名是实例变量。

self.variable正在对象上调用getter方法。

在您的示例中,实例变量是自动生成的,您也不需要合成属性。

如果您不使用ARC,那么您的示例中真正重要的区别就会发挥作用 -

如果您使用self.variableretain标记属性,

strong将为您保留一个对象 _variable根本没有涉及内存管理