感谢这个问题/答案Automatic Reference Counting: Error with fast enumeration我解决了让我疯狂的部分原因。
但是,我仍然收到错误“将'NSDictionary * __ strong '分配给'__unsafe_unretained id '更改指针的保留/释放属性”。我已经阅读了ARC编程指南以及与指针转换相关的部分,但不幸的是,我还不是一个好的程序员。
查看注释的代码行。任何帮助将非常感谢。提前谢谢。
- (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *)state
objects: (id __unsafe_unretained *)buffer
count: (NSUInteger)bufferSize
{
if (*enumRows = [self getPreparedRow]) {
state->itemsPtr = enumRows; // Assigning 'NSDictionnary *__strong *' to '__unsafe_unretained id*' changes retain/release properties of pointer
state->state = 0;
state->mutationsPtr = &state->extra[0]; // was state->mutationsPtr = (unsigned long *) self; before
return 1;
} else {
return 0;
}
}
在.h文件中使用此声明
@interface BWDB : NSObject <NSFastEnumeration> {
NSDictionary * enumRows[1];
}