Sni*_*ips 3 objective-c nsmutablearray
我想使用一个指向对象实例的指针数组,但只想在需要时(即懒惰地)创建这些对象的实例.该数组对应于UI中的表,因此每个数组索引对应一个表行.
我想使用NSMutableArray来保存指向对象实例的指针(当用户在UI中选择相应的行时发生).
如果选择表中的行,则检查相应的数组条目.如果指针值为nil,则尚未创建实例,因此在该点创建实例,并且对象指针存储在相应的索引数组条目中.
显然,这要求我最初从一个nil指针数组开始,但是objC不会让我在NSArray中放入一个nil指针.
我不能在创建数组时向对象添加对象,因为数组索引与表行不对应.
什么是最好的objC解决方案?
Objective C中的惯用解决方案是使用NSNull:
NSNull类定义了一个单例对象,用于表示集合对象中的空值(不允许使用nil值).
创建你的NSMutableArray,并用[NSNull null]对象填充它:
NSMutableArray *array = [NSMutableArray arrayWithCapacity:N];
for (int i = 0 ; i != 10 ; [a addObject:[NSNull null]], i++);
Run Code Online (Sandbox Code Playgroud)
当您检查是否存在对象时,请将NSMutableArray索引处的对象与以下对象进行比较[NSNull null]:如果它们相同,则替换为真实对象; 否则,真实物体已经存在.
if ([array objectAtIndex:index] == [NSNull null]) {
MyRealObject realObject = [[MyRealObject alloc] init];
[array replaceObjectAtIndex:index withObject:realObject];
}
Run Code Online (Sandbox Code Playgroud)
**编辑摘要**编辑使用循环初始化数组(感谢bbum).
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |