所以我有一個方法A,它主要檢查UISwitches的當前狀態,然後通過文本SMS服務API提醒用戶。然而;因爲它不斷地檢查引腳的狀態,我不希望它發送文本50000次(垃圾郵件的SMS服務);該方法中的最後一個FOR循環是檢查是否應該檢查用戶的那個循環;然而,隨着它的當前狀態,它不斷地在應用程序運行時發生垃圾郵件。如何防止這種方法在運行時經常調用
謝謝,如果你需要更多的澄清請問。
方法A:
- (void)setInput:(NCDigitalInput *)input
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *baseString;
uint8_t value = input.value;
self.inputLabel.text = [NSString stringWithFormat:@"0x%0.2X",value];
for (UISwitch *temp in switchArrayIn)
{
temp.on = (value & 1);
value >>= 1;
}
for(int i = 0; i<switchArrayIn.count; i++){
if(![defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dRecentlyAlerted",i]] && ([[switchArrayIn objectAtIndex:i] isOn]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dBool",i]]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInputAlertOn%dBool",i]])){
[defaults setBool:TRUE forKey:@"digitalInput%dRecentlyAlerted"];
baseString = [defaults objectForKey:@"digitalInput%d"];
NSString *stringSMS = [baseString stringByAppendingString:@" has turned on"];
[self digitalSMSCheck:i :stringSMS];
}
if(![defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dRecentlyAlerted",i]] && !([[switchArrayIn objectAtIndex:i] isOn]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dBool",i]]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInputAlertOff%dBool",i]])){
[defaults setBool:TRUE forKey:@"digitalInput%dRecentlyAlerted"];
baseString = [defaults objectForKey:@"digitalInput%d"];
NSString *stringSMS = [baseString stringByAppendingString:@" has turned off"];
[self digitalSMSCheck:i :stringSMS];
}
}}
難道你只是有一個方法,只要UISwitch的值發生變化就調用,而不是檢查循環中的每個UISwitch? – Kamaros
這基本上是一種故障保護功能,在交換機自行關閉的情況下會發出警報(這會在給定應用程序的情況下發生)。 – Tukajo
目前尚不清楚爲什麼你無法檢測到交換機的變化。這一切都發生在你的應用程序中,對吧?它是用戶事件或更改開關的代碼。 –