2010-05-23 83 views
1
- (IBAction) someButtonCall { 

     if(!someCondition) { 
      someButtonCallBack = @selector(someButtonCall); 
      [self presentModalViewController:someController animated:YES]; 
     } else 
     ... 
} 

//Called from someController 
- (void) someControllerFinished:(BOOL) ok { 
    [self dismissModalViewControllerAnimated:YES]; 
    if(ok) [self performSelector:someButtonCallBack]; 
    else ... 
} 

我想知道如果用戶每次分配一個新的選擇器(上面的代碼是假設的,而不是我在做什麼)泄漏選擇器是否繼續進入!someCondition子句。Objective C選擇器內存管理(這是否泄漏內存)?

任何幫助表示讚賞。

謝謝, 詹姆斯·瓊斯

+0

謝謝大家!我沒有想到它,但我並不是100%確定的。 – 2010-05-23 03:44:57

回答

3

不,這不會泄漏任何東西 - 您不擁有由@selector()sel_registerName()返回的SEL值,即Objective-C運行時的值。

0

SEL類型只是一個C字符串,所以你不會有內存泄漏白衣重新幽會。

0

本示例不泄漏內存。在編譯時對@selector()進行評估。你可能會泄漏一個SEL變量,但不是選擇器本身。