2012-07-11 54 views
-1

誰能告訴我,請爲什麼returnSet作爲無當有「程序」塊用的NSSet

小寫字符我已經通過加強與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; 
} 

回答

3

發佈的代碼沒有錯誤。它不能返回值nil

你的錯誤在別處。

+0

是的,我已將__block帶走,現在它仍然有效,也許它只是共同發生的;我現在已經做了很多改變。正如使用__block時總是學到一些新東西 - 謝謝大家! – John67 2012-07-11 21:49:46

0

我猜你的問題是一個ARC內存管理問題。您發佈的代碼會返回對其創建的集合的非擁有參考。除非將其保存爲強實例變量,否則它將被解除分配。