self.object和_object之间的区别

时间:2014-07-08 00:29:23

标签: objective-c

在Objective-C中,使用下划线调用对象(调用实例变量)或使用self关键字调用它有什么区别?例如,我设置了一个名为.h的简单.mMethods文件,该文件继承自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关键字来调用和设置对象,所以是什么让一个更好比另一个?或者这是个人偏好和习惯的情况?

1 个答案:

答案 0 :(得分:1)

如前所述,一个是实例变量,另一个是属性。在Objective-C的早期阶段,有一种情况会更好。现在他们的行为非常相似,主要是偏好选择。有人争论哪一个更好但是你应该使用哪一个并不重要。