作者:往事随风5201314 | 来源:互联网 | 2024-12-23 15:22
本文详细介绍了如何在Objective-C中使用@public和@protected修饰符来控制类成员的访问权限。同时,探讨了点语法和箭头操作符的区别,以及属性声明和实现的自动生成。
在 Objective-C 中,@interface 块用于定义类的接口。例如:
@interface Car : NSObject
@end
点语法用于访问对象的属性(setter 和 getter 方法),而 @property 会自动生成这些方法的声明和实现。
@property (nonatomic, assign) int speed;
@synthesize 语句可以显式地为属性生成 setter 和 getter 方法。例如:
@synthesize speed = _speed;
此外,我们还可以使用箭头操作符(->)直接访问成员变量,但这是不推荐的做法,因为它破坏了封装性。
@implementation Car
{
@public
int _speed;
@protected
int _wheels;
}
- (void)setSpeed:(int)newSpeed {
_speed = newSpeed;
}
- (int)speed {
return _speed;
}
@end
在 main 函数中,我们可以创建一个 Car 对象并演示如何使用这些访问方式:
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *car = [Car new];
car.speed = 100; // 使用点语法设置速度
NSLog(@"%d", car.speed); // 使用点语法获取速度
/* 因为是 @public 所以可以直接外部访问成员变量,但建议使用点语法或 setter/getter 方法
car->_speed = 250;
*/
}
return 0;
}