2011-09-23 72 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]; 
}