2012-05-18 15 views
9

मैं बारे में सूचना पोस्ट करने के लिए इस समारोह को जोड़ने जब एप्लिकेशन को अग्रभूमि दर्ज करें:iOS एप्लिकेशन applicationWillEnterForeground और यह थोड़ी देर के लिए stucked

- (void) handleEnterForeground: (NSNotification*) sender 
{ 
    [self reloadTableData]; 
} 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver: self 
             selector: @selector(handleEnterForeground:) 
              name: @"UIApplicationWillEnterForegroundNotification" 
              object: nil]; 
} 

लेकिन handleEnterForeground:

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName: @"UIApplicationWillEnterForegroundNotification" object: nil]; 
} 

अपने ही कक्षा में समारोह दो बार बुलाया जाएगा, मुझे नहीं पता क्यों। reloadTableData: फ़ंक्शन दूरस्थ वेब सेवा को कॉल करेगा, इसलिए जब ऐप अग्रभूमि दर्ज करेगा, तो यह थोड़ी देर के लिए फंस जाएगा। पीएलएस मुझे इसके साथ मदद करता है, और धन्यवाद।

उत्तर

17

सिस्टम स्वचालित रूप से उस ईवेंट को कॉल करेगा। दो बार आग लगने का कारण यह है कि आप इसे फिर से मैन्युअल रूप से आग लगाते हैं।

पीएस एक एनएसएसटींग शाब्दिक के बजाय परिवर्तनीय नाम UIAplicationWillEnterForeground का उपयोग करना बेहतर है।

संपादित करें: मुझे एहसास है कि अब भ्रम इस तथ्य से आ रहा है कि आप नहीं जानते थे कि यह नाम पहले से ही लिया गया था। इस तरह की समस्या में भाग लेने वाले अन्य लोगों के लिए एक नोट के रूप में, टकराव से बचने के लिए अपने प्रोजेक्ट उपसर्ग (यानी XYZEventNotification) के साथ अपने ईवेंट नामों को उपसर्ग करना एक अच्छा अभ्यास है।

+0

वह दो बार गोलीबारी कर रहा है? – cnu

+0

मुझे यकीन है कि मैंने एक बार उस समारोह को बुलाया था। – jxdwinter

+1

@cnu * वह * इसे एक बार फायर कर रहा है, और आईओएस रनटाइम इसे एक बार फायर कर रहा है। यह घटना स्वचालित रूप से कॉल हो जाती है। – borrrden

संबंधित मुद्दे