【问题标题】:Changing the withObject parameter of the performSelector before it gets invoked!在调用 performSelector 之前更改其 withObject 参数!
【发布时间】:2011-03-01 17:23:03
【问题描述】:

我处于必须更改 withObject 参数值的情况。我有以下代码:

[self performSelector:@selector(refreshScore:) withObject:self.args afterDelay:7.0];

self.args 是一个简单的 NSString,其初始值为 @"refreshScore"。当 refreshScore 被触发时,我确保它只有在参数中有值时才会前进,如下所示:

-(void) refreshScore:(NSString *) argument 
{
    if([argument length] == 0) return;
}

这很好用!但是我有一个带有 CCMenuItemImage 的 CCMenu。当我单击 CCMenuItemImage 时,另一个选择器会触发 self.args = @""; (空的)。但它不会对 refreshScore 方法产生任何影响,它仍然表现得好像 self.args 填充了初始值。

CCMenuItemImage 的选择器是否在某个单独的线程上触发?

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案1】:

    放两个断点(在CCMenuItemImage点击回调和调用performSelector的方法中),看看先触发什么。 99% 如果一切正常,这将是第一个案例。检查值是否真的改变了

    【讨论】:

    • 谢谢!我检查了一下,似乎作为选择器方法的 refreshScore 有点被缓存或放入队列中,以便与参数一起稍后处理。如果我只使用公共属性而不是参数参数,那么它可以正常工作!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2015-12-15
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多