OC self 和_的区别
时间: 2024-03-28 13:41:45 浏览: 184
下拉列表的实现20190108_Objective-C_ios_OC语言_下拉列表_
在 Objective-C 中,self 和 _ 是两个不同的概念。
- self 是一个指向当前对象的指针,在对象方法中可以使用 self 来访问当前对象的属性和方法。
- _ 是一个前缀,用于访问对象的实例变量。在 Objective-C 中,实例变量默认是私有的,不可以直接访问。使用 _ 前缀可以直接访问实例变量。
举个例子,假设有一个 Person 类,有一个实例变量 name 和一个方法 getName:
```
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
- (NSString *)getName;
@end
@implementation Person
- (NSString *)getName {
return self.name;
}
@end
```
在该类的方法中,使用 self.name 可以访问 name 属性;使用 _name 可以直接访问实例变量 name:
```
@implementation Person
- (NSString *)getName {
return _name; // 访问实例变量 name
// 或者 return self.name; // 访问 name 属性
}
@end
```
需要注意的是,使用 _ 前缀直接访问实例变量可能会绕过属性的 getter 和 setter 方法,可能会导致一些意想不到的问题。因此,建议在访问实例变量时,优先使用属性来访问。
阅读全文