2011-09-03 77 views
1

實際上可以在塊中執行以下操作。我不知道釋放超出塊範圍的對象是否正常?在我的例子中,venObject和newPoll是內部塊範圍之外的對象。在一個塊內釋放一個塊中的對象

[query findObjectsInBackgroundWithBlock:^(NSArray * objects, NSError * error){ 
     PFObject * venObject; 
     if (!error){ 
       venObject = [[PFObject alloc] initWithClassName:@"Venue"]; 
       [venObject setObject:self.venue.identification forKey:@"fid"]; 
      } 

      PFObject * newPoll = [[PFObject alloc] initWithClassName:@"Poll"]; 

      [newPoll saveInBackgroundWithBlock:^(BOOL succeeded, NSError * error){ 
       if (succeeded){ 
         [venObject release]; //is this fine? 
         [newPoll release]; //is this fine? 
       } 
      }]; 
     } 

回答

0

是的,它應該工作,但我發現你在創建它們的相同的範圍之清潔劑autorelease的對象。

此外,你的代碼有許多錯誤。如果error是非nil,venObject將是一個未初始化的指針,可以指向任何地方。稍後在該指針上調用release可能會導致崩潰。如果保存不成功,則不會釋放對象,從而導致內存泄漏。

相關問題