您将注意到*SubRowObjectKey设置为void-我收到的错误是: EXC_BAD_ACCESS_(code=EXC_I386_GPFLT)
这是一种通用保护故障,试图访问不存在的内容(?)
当它崩溃时,Xcode会突出显示以下代码:
objc_setAssociatedObject(self, SubRowObjectKey, subRowObj, OBJC_ASSOCIATION_ASSIGN);
还有这个: Printing description of *(subRowObj): (id) [0] = Printing description of SubRowObjectKey:
它似乎在32位模式下工作得很好,但是在64位模式下它似乎会迷失方向。下面是我看到的代码部分。
#pragma mark - NSIndexPath (SKSTableView) static void *SubRowObjectKey; @implementation NSIndexPath (SKSTableView) @dynamic subRow; - (NSInteger)subRow { id subRowObj = objc_getAssociatedObject(self, SubRowObjectKey); return [subRowObj integerValue]; } - (void)setSubRow:(NSInteger)subRow { if (IsEmpty(@(subRow))) { return; } id subRowObj = @(subRow); objc_setAssociatedObject(self, SubRowObjectKey, subRowObj, OBJC_ASSOCIATION_ASSIGN); } + (NSIndexPath *)indexPathForSubRow:(NSInteger)subrow inRow:(NSInteger)row inSection:(NSInteger)section { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section]; indexPath.subRow = subrow; return indexPath; }
您可以在此处下载并使用代码: https://github.com/sakkaras/SKSTableView
UITableView
类别的NSIndexPath
:出现了断言“无效的索引路径,不能与UITableView一起使用。传递给表视图的索引路径必须恰好包含指定部分和行的两个索引。如果可能,请在UITableView.h中使用NSIndexPath的类别。”
- Dmitry