我对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。
非常感谢任何投入。谢谢!
答案 0 :(得分:14)
区别在于:
_
的变量名是实例变量。
self.variable
正在对象上调用getter方法。
在您的示例中,实例变量是自动生成的,您也不需要合成属性。
如果您不使用ARC,那么您的示例中真正重要的区别就会发挥作用 -
如果您使用self.variable
或retain
标记属性, strong
将为您保留一个对象
_variable
根本没有涉及内存管理