1

Web サービスからのデータをキャッシュする変数がいくつかあります。

コードをより動的にするために、キャッシュ変数への double ポインターを返したいと考えています。つまり、ダブルポインターです。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 に答える