在NSDictionary上快速枚举时出错

时间:2011-11-06 14:37:29

标签: objective-c ios5 automatic-ref-counting

感谢这个问题/答案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];
}

0 个答案:

没有答案