Objective-C块使用了强变量

时间:2013-02-19 21:18:09

标签: objective-c objective-c-blocks

我想了解哪个函数是正确的,希望有些人可以在func1和func2之间给我建议。

现在我使用了func1,有人告诉我func2有内存问题。

@property (nonatomic) NSDictionary *NameAndIdDictionary;
 - (void) func1 
 {
    __weak NSDictionary *NameAndIdDictionary = self.NameAndIdDictionary;
     self.Keys = [[NameAndIdDictionary allKeys] sortedArrayUsingComparator: ^NSComparisonResult(id obj1, id obj2) {
        NSString *name1 = (NSString *)NameAndIdDictionary[obj1];
        NSString *name2 = (NSString *)NameAndIdDictionary[obj2];
        return [[name1 uppercaseString] compare:[name2 uppercaseString]];
    }];
 }


 - (void) func2
 {
     self.Keys = [[self.NameAndIdDictionary allKeys] sortedArrayUsingComparator: ^NSComparisonResult(id obj1, id obj2) {
        NSString *name1 = (NSString *)self.NameAndIdDictionary[obj1];
        NSString *name2 = (NSString *)self.NameAndIdDictionary[obj2];
        return [[name1 uppercaseString] compare:[name2 uppercaseString]];
    }];
 }

1 个答案:

答案 0 :(得分:1)

func2没问题。 sortedArrayUsingComparator不存储该块以供以后使用或类似的东西,因此不存在保留周期的问题。