oc读写权限
时间: 2023-08-06 11:06:52 浏览: 58
在Objective-C中,我们可以使用`@property`关键字来声明属性,其中包括属性的读写权限。属性的读写权限可以通过在`@property`声明中使用`readonly`和`readwrite`来指定。
- `readonly`:表示该属性只有getter方法,没有setter方法,即只读属性。
- `readwrite`:表示该属性既有getter方法,也有setter方法,即可读可写属性。
例如:
```
// 只读属性
@property (nonatomic, readonly) NSString *name;
// 可读可写属性
@property (nonatomic, readwrite) NSInteger age;
```
需要注意的是,如果我们不显式地指定属性的读写权限,默认情况下属性是可读可写的。在实现类中,我们可以通过重写属性的setter和getter方法来控制属性的访问权限。例如:
```
// 声明属性
@property (nonatomic, strong) NSString *name;
// 重写setter方法,控制写权限
- (void)setName:(NSString *)name {
if (_name != name) {
_name = [name copy];
}
}
// 重写getter方法,控制读权限
- (NSString *)name {
return [_name copy];
}
```
在上面的例子中,我们重写了`name`属性的setter和getter方法,通过在setter方法中控制写权限,只有在`name`属性发生变化时才会赋值,而在getter方法中控制读权限,返回的是`_name`属性的副本,保证了属性的只读性。