Objective C选择器内存管理(这会泄漏内存)吗?

时间:2010-05-23 02:58:08

标签: iphone objective-c memory-leaks selector

- (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子句,如果选择器每次都通过分配一个新的选择器而泄漏(上面的代码是假设而不是我正在做的事情)。

感谢任何帮助。

谢谢, 詹姆斯琼斯

3 个答案:

答案 0 :(得分:3)

不,这不会泄漏任何内容 - 您不拥有SELsel_registerName()返回的@selector()值,Objective-C运行时会这样做。

答案 1 :(得分:0)

SEL类型只是一个C字符串,因此您不会有重新分配的内存泄漏。

答案 2 :(得分:0)

此示例不会泄漏内存。 @selector()在编译时进行评估。您可能会泄漏SEL变量,但不会泄漏选择器本身。