在Objective-C中,使用下划线调用对象(调用实例变量)或使用self
关键字调用它有什么区别?例如,我设置了一个名为.h
的简单.m
和Methods
文件,该文件继承自NSObject.h
。
Methods.h
#import <Foundation/Foundation.h>
@interface Methods : NSObject
@property int firstNumber;
@property int secondNumber;
@end
Methods.m
#import "Methods.h"
@implementation Methods
- (instancetype)init
{
self = [super init];
if (self) {
_firstNumber = 33;
self.secondNumber = 67;
NSLog(@"The value of _firstNumber is: %i", _firstNumber);
NSLog(@"The value of self.secondNumber is: %i", self.secondNumber);
}
return self;
}
@end
这是执行此代码时命令行中的结果:
2014-07-07 20:22:08.551 CommandLine[2771:39622] The value of _firstNumber is: 33
2014-07-07 20:22:08.552 CommandLine[2771:39622] The value of self.secondNumber is: 67
这是预期的结果,因为值具有它们设置的数值,并且我使用下划线和self
关键字来调用和设置对象,所以是什么让一个更好比另一个?或者这是个人偏好和习惯的情况?
答案 0 :(得分:1)
如前所述,一个是实例变量,另一个是属性。在Objective-C的早期阶段,有一种情况会更好。现在他们的行为非常相似,主要是偏好选择。有人争论哪一个更好但是你应该使用哪一个并不重要。