2011-09-23 73 views
1

我有一种方法,通过将实例初始化到另一个类,然后运行代码使用IBOutlets的引用来设置另一个应用程序中的内存地址,从而获取另一个类的IBOutlet。该代码运行良好,但定期更新,我设置为每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]; 
    } 
} 

的问题是,每当我从不是一个按下按钮以外的任何调用此代码(例如[自ONOFF:自我]),简要的值设置为0,然后回到1.我的代码在应用程序控制器内部实现时工作得很好;但是,现在它可以工作,但有这个错误。如果有人能帮助我,将不胜感激。 谢谢。

+0

这是什么'setIntForAddress:value:'方法呢?它是否改变'[[appDelegate buttonOutletName]状态]'的值? – EmptyStack

回答

0

我想象的方法是不知何故被称为两次。你确定你只调用过一次吗?检查仪器应用程序,看它是否确实被调用两次。

0

我觉得setIntForAddress:值:方法改变的[的appDelegate buttonOutletName]状态]的值。如果是这样,只需将两个如果语句转换为单个if-else块。

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