iphone - ARC 中双指针的问题

标签 iphone objective-c macos cocoa

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

为了使我的代码更加动态,我想返回一个指向缓存变量的双指针。 所以它是一个双指针。我在使用 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
<小时/>

这是错误的做法吗?

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

最佳答案

解决方案

<小时/>

让它像这样工作:

<小时/>
- (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 *)... 也同样有效。

关于iphone - ARC 中双指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856720/

相关文章:

iphone - 在输入文本字段之前禁用按钮?

ios - UICollectionViewCell 位置加倍

ruby-on-rails - 不兼容的库版本 : nokogiri. bundle 需要 8.0.0 或更高版本,但 libiconv.2.dylib 提供 7.0.0 版本

c++ - QT Creator——跨平台编译

swift - 既然 Swift 已经弃用了 macOS 中的 initialize() ,是否有替代方案?

iphone - 如何将 subview 放置在屏幕上的任何位置, 'Docking Views'

ios - 无法在异常时显示 UIAlert

ios - 无法在 iOS 设备上为 Xamarin 应用程序运行 Calabash 测试

iphone - 应用程序关闭时是否可以从推送通知触发图像下载?

objective-c - 关于 CC_SHA256 objective-c 的一些信息