-1

「プログラム」に小文字があるときにreturnSetがnilとして返される理由を誰か教えてください

私は一歩踏み出しましたが、NSLogは間違いなく変数を選択していますが、addObjectの場合、そうではありませんか?

+ (NSSet *)variablesUsedInProgram:(id)program
{
    NSMutableSet *returnSet = [[NSMutableSet alloc]init];

    if ([program isKindOfClass:[NSArray class]]) {
        [program enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop)
        {
            if ([obj isKindOfClass:[NSString class]]) {
                if ([obj rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]].location != NSNotFound) {
                    NSLog(@"Variable: %@", obj);
                    [returnSet addObject:obj]; 
                }
            }
        }];
    }

    return returnSet;
}
4

2 に答える 2

3

投稿されたコードにはバグはありません。の値を返すことはできませんnil

あなたのエラーは他の場所にあります。

于 2012-07-11T20:13:41.470 に答える
0

あなたの問題はARCメモリ管理の問題だと思います。投稿したコードは、作成したセットへの非所有参照を返します。強力なインスタンス変数に保存しない限り、割り当てが解除されます。

于 2012-07-15T14:29:42.077 に答える