6

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

以下是一个简单的示例

我的类.h

#import <Foundation/Foundation.h>

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

我的班级.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”是公共的,而“anotherName”是私有的。

将不胜感激任何投入。谢谢!

4

1 回答 1

15

不同之处在于:

变量名_是实例变量。

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

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

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

self.variableretain如果您使用或strong _variable根本不使用内存管理标记属性,将为您保留一个对象

于 2013-02-28T07:30:40.750 回答