1

我有一些变量,它们缓存来自网络服务的一些数据。

为了使我的代码更加动态,我想返回一个指向缓存变量的双指针。所以它是一个双指针。我在使用 ARC 时遇到了一些问题。

这是我得到的:


- (id *)pointerToSectionCacheProperty:(SomeSection)section {
    switch (section) {
        case Section1:
        {
            return &_section1Cache;
        }
            break;
        case Section2:
        {
            return &_section2Cache;
        }
            break;
        case Section3:
        {
            return &_section3Cache;
        }
            break;
    }

    return nil;
}

ARC给我以下错误:

Returning 'NSArray *__strong *' from a function with result type '__autoreleasing id *' changes retain/release properties of pointer

这是错误的方法吗?

如果是这样,正确的方法是什么?

4

1 回答 1

1

解决方案


让它像这样工作:


- (NSArray *__strong *)pointerToSectionCacheProperty:(SomeSection)section {
    switch (section) {
        case Section1:
        {
            return &_section1Cache;
        }
            break;
        case Section2:
        {
            return &_section2Cache;
        }
            break;
        case Section3:
        {
            return &_section3Cache;
        }
            break;
    }

    return nil;
}

作为旁注,- (id __strong *)...也可以正常工作。

于 2013-09-17T18:23:34.420 回答