【问题标题】:Objective C selector memory managment (does this leak memory)?Objective C 选择器内存管理(这会泄漏内存)吗?
【发布时间】:2010-05-23 02:58:07
【问题描述】:
- (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 子句(上面的代码是假设的,而不是我正在做的)。

感谢任何帮助。

谢谢, 詹姆斯·琼斯

【问题讨论】:

  • 谢谢大家!!我不认为是这样,但我不是 100% 确定。

标签: iphone objective-c memory-leaks selector


【解决方案1】:

不,这不会泄漏任何东西 - 您不拥有 @selector()sel_registerName() 返回的 SEL 值,Objective-C 运行时拥有。

【讨论】:

    【解决方案2】:

    SEL 类型只是一个 C 字符串,因此在重新分配时不会出现内存泄漏。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多