JoB*_*324 32 equality objective-c nsindexpath iphone-sdk-3.2
我有一些代码依赖于比较两个NSIndexPaths并根据它们的相等或缺乏来执行不同的代码(使用-isEqual).大部分时间它都能正常工作,但有时则不然.我已经使用调试器控制台在代码执行期间测试两个索引路径,它们看起来与我相同.
这是代码:
- (BOOL)selectedStreetIsSameAsLastSelectedStreet
{
return [self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet];
}
Run Code Online (Sandbox Code Playgroud)
这是执行代码期间的输出:
(gdb) po self.indexPathOfSelectedStreet
<NSIndexPath 0x60a0770> 2 indexes [26, 1]
(gdb) po self.previousObject.indexPathOfSelectedStreet
<NSIndexPath 0x55b4f70> 2 indexes [26, 1]
(gdb) p (BOOL)[self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet]
$2 = 0 '\000'
Run Code Online (Sandbox Code Playgroud)
我做错了什么,还是有另一种方法可以可靠地测试两个NSIndexPaths的相等性?
Sve*_*ven 63
从iOS 5开始,你可以使用isEqual:
(见评论)
[indexPath1 compare: indexPath2] == NSOrderedSame
.
也许你发现了一个bug NSIndexPath
.如果您尝试NSIndexPath
使用已存在的路径创建新的,则应该获取该路径.所以isEqual:
可能只是比较指针而不是存储的实际索引.
归档时间: |
|
查看次数: |
8809 次 |
最近记录: |