所以,假设您在类头文件中声明了一个局部变量NSArray*myArray.
然后@property (nonatomic, retain) NSArray *myArray,您也可以在头文件中写入.
在你的.m文件中,你写@synthesize myArray.
到目前为止一切都很标准.你现在有一个变量myArray,可以通过Apple合成的setter和getters访问它.
稍后,您初始化变量.
NSArray *anArray = [[NSArray alloc] initWithObjects etc etc...];
self.myArray = anArray;
[anArray release];
Run Code Online (Sandbox Code Playgroud)
所以现在myArray指向内存中的数组,其释放计数为1(如果我没有记错的话).
我的问题是,为什么我们不能写
@property (nonatomic, assign) NSArray *myArray;
@synthesize myArray;
Run Code Online (Sandbox Code Playgroud)
..然后通过初始化写
self.myArray = [[NSArray alloc] initWithObjects etc etc...];
Run Code Online (Sandbox Code Playgroud)
自从我第一次见到它以来,这一直让我很困惑.这有技术原因吗?还是道德?;-)还是理论上的?
任何帮助将非常感激...
干杯
卡尔...
其中一个属性点是让我们不必自己考虑内存管理.制作属性assign然后将保留对象分配给它会破坏使用属性的目的.
这很简单:
@property (nonatomic, retain) NSArray * myArray;
@synthesize myArray;
self.myArray = [NSArray arrayWithObjects:etc, etc1, etc2, nil];
Run Code Online (Sandbox Code Playgroud)
然后所有的内存管理都会为您完成.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |