控制器意外延迟

时间:2011-09-23 05:43:33

标签: objective-c xcode memory nsbutton

我有一个方法通过将实例初始化到另一个类来获取另一个类的IBOutlet,然后运行使用对IBOutlets的引用的代码来在另一个应用程序中设置内存地址。代码运行正常,但定期更新我设置为每5秒刷新一次的计时器。问题是每5秒钟内存地址会定期更改为错误的值,然后再返回正确的值。这是我的基本代码:

#define OFF 0
#define ON 1
- (void)onOff:(id)sender {
    if ([[appDelegate buttonOutletName] state] == ON) {
        [helper setIntForAddress:0xFFFFFF value:1];
    }
    if ([[appDelegate buttonOutletName] state] == OFF) {
        [helper setIntForAddress:0xFFFFFF value:0];
    }
}

问题在于每当我从按下按钮之外的任何东西调用此代码时(例如[self onOff:self];)它会将值简单地设置为0然后再返回1.我的代码在内部实现时工作正常应用程序控制器;但是,现在它可以工作,但有这个错误。如果有人可以帮助我,将不胜感激。 感谢。

2 个答案:

答案 0 :(得分:0)

我想这个方法在某种程度上被调用了两次。你确定你只打过一次电话吗?请查看Instruments应用程序,看看它是否确实被调用了两次。

答案 1 :(得分:0)

我认为 setIntForAddress:value: 方法会更改 [appDelegate buttonOutletName]州] 的值。如果是这样,只需将两个 if语句转换为单个 if-else 块。

if ([[appDelegate buttonOutletName] state] == ON) {
    [helper setIntForAddress:0xFFFFFF value:1];
} else if ([[appDelegate buttonOutletName] state] == OFF) {
    [helper setIntForAddress:0xFFFFFF value:0];
}