see*_*r12 7 objective-c nsmutablearray ios6
鉴于以下代码示例,newMutableArrray变量是否根据两个不同的初始化而不同,或者相同?
NSArray *originalArray = @[obj1, obj2, oj3];
NSMutableArray *newMutableArray = nil;
if (thereIsSomeDifference) {
newMutableArray = [NSMutableArray arrayWithArray:originalArray];
}
else {
newMutableArray = [originalArray mutableCopy];
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*mph 15
不!这些初始化之间存在两个差异:
保留计数:在第一种情况下,你得到一个自动释放的对象,在第二种情况下,你得到一个保留的对象,你需要在之后释放它(这不适用于ARC)
如果originalArray为nil,在第一种情况下,你将获得一个带有0项的可变数组,在第二种情况下,你将获得nil(因为向nil发送消息返回nil).在你的例子中,很明显originalArray不是零,但在现实生活中你可以达到这种情况(我刚才有案例)
如果数组具有相同的对象(以相同的顺序),则该数组等于另一个数组(isEqualToArray:selector).这是使用isEqual:方法验证的(忽略数组是否可变).
它们是相同的,一个或另一个初始化没有任何区别.验证此日志记录isEqualToArray的结果:.
NSArray *originalArray = @[obj1, obj2, oj3];
NSMutableArray *newMutableArray = nil;
newMutableArray = [NSMutableArray arrayWithArray:originalArray];
thereIsSomeDifference= ![newMutableArray isEqualToArray: [originArray mutableCopy] ];
Run Code Online (Sandbox Code Playgroud)
请注意,即使您将其与非可变副本进行比较,该比较也将为真.
| 归档时间: |
|
| 查看次数: |
3849 次 |
| 最近记录: |