【发布时间】:2014-08-07 17:32:30
【问题描述】:
我正在阅读关于 Objective-C 编程的 big nerd 牧场指南。
第 21 章中有一个例子和挑战让我很困惑。 (我实际上完成了挑战,但我使用了示例中的先前代码)我想真正了解我做了什么。
它与声明一个 NSArray 类型的属性,然后将 setter 方法声明为 NSMutableArray 类型有关。谁能告诉我这里发生了什么?此声明的“幕后”发生了什么。
@property (nonatomic copy) NSArray *assets
这两个文件中发生了什么?请尽可能在最低级别进行解释。谢谢!
BNREmployee.h
@interface BNREmployee: BNRPerson
{
NSMutableArray *_assets
}
@property (nonatomic copy) NSArray *assets
@end
BNREmployee.m
@implementation BNREmployee
- (void)setAssets:(NSArray *)a
{
_assets = [a mutableCopy]; //What did this actually do?
}
- (NSArray *)assets
{
return [_assets copy];
}
【问题讨论】:
-
assets的“外部面”(即属性视图)是一个不可变数组,但内部维护了一个可变版本。 -
(请记住,没有规则规定属性必须有任何特定变量支持它。它可以从数据库查询或网络请求中获取其值。)
标签: objective-c class