Objective-C中_variable和self.variable有什么区别?

are*_*s05 6 variables objective-c 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

那么上面的实现设置变量有什么不同吗?变量"myName"是Public,而"anotherName"是Private.

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

Jes*_*ack 14

不同之处在于:

变量名称_是实例变量.

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

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

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

self.variable如果您使用retainstrong _variable根本不解决内存管理问题,将为您保留一个对象

  • 你能解释一下你的最后一句话吗?“如果你用 `retain` 或 `strong` 标记属性,`self.variable` 将为你保留一个对象,`_variable` 根本不解决内存管理问题” (2认同)

归档时间:

查看次数:

7176 次

最近记录:

12 年,10 月 前