RJR*_*RJR 1 iphone objective-c ios
面对使用NSMutableArray.Came的问题,需要将空的mutableArrays添加到NSMutableArray中.当我删除最后一个数组时,之前添加的所有数组也从Parent数组中删除.代码在这里,
NSMutableArray *collections = [[NSMutableArray alloc] init];
NSMutableArray *bookSet1 = [[NSMutableArray alloc] init];
[collections addObject:bookSet1];
NSMutableArray *bookSet2 = [[NSMutableArray alloc] init];
[collections addObject:bookSet2];
NSLog(@"bookSet1==bookSet2 %d", bookSet1==bookSet2);
[collections removeObject:bookSet2];
NSLog(@"Collections count==%d", [collections count]);
Run Code Online (Sandbox Code Playgroud)
结果
ArrayTest [2356:c07] bookSet1 == bookSet2 0 ArrayTest [2356:c07]集合数== 0
检查它们是否具有相同的引用但是equals方法返回false,因此它们肯定不指向相同的内存位置.不知道为什么这样的行为.任何可能的解决方案来克服这个
小智 9
检查它们是否具有相同的引用但是equals方法返回false
罗.您没有使用检查相等性isEqual.如果你曾经使用过isEqual:,你就会得到1(即YES).
NSMutableArray(以及所有基本的Cocoa集合类)用于isEqual:确定两个对象是否相同.这个方法可以被覆盖,如果它们的内容在概念上被认为是相同的,它通常用于使对象比较相等,不仅如果它们的内存地址相同(如果后者是真的,我们也无法比较字符串或像它们这样的任何对象安全地,例如).
你真的不能克服,因为这是在预期和概念上的权利的行为removeObject:.如果由于某种原因,你不能使用它,你总是可以使用这个removeObjectIdenticalTo:方法,它使用内存地址进行比较(这里的文档).
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |