2013-08-24 29 views
0

我有两个方法在应用程序的viewDidLoad,我希望如果通知方法被调用,那么不应该调用其他方法。如何检查通知是否被调用,然后不要调用方法

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(actionNotificationDataA:) 
              name:@"reloadDataActivity" 
              object:nil]; 

下面是另一种方法。我希望如果通知方法没有被调用,那么应该调用这个方法:

[NSThread detachNewThreadSelector:@selector(allData:) toTarget:self withObject:nil]; 

否则,不应该调用此方法。

+0

您的应用程序的状态通知调用?以及哪个状态没有被叫?你需要采取对象来修复它:) – iPatel

+0

@iPatel我没有得到你我希望如果通知被调用,那么它不应该调用其他方法 –

回答

0

第一个只有在某个地方发布通知时才会被调用。但第二个代码在代码运行时会突然分离新线程。这可能会造成问题。

对于一个主意,你的要求:

保持一个BOOL与默认NO。 然后在两种方法中检查boolValue是否为NO,然后只有在boolValueNO并将boolValue更改为YES时才运行该代码。

0

BOOL isNotifCall;放入您的.h file

viewDidLoad方法启动,给NOisNotifCall,诸如此类,你NSThread(我不知道有关参数,所以我采取id

-(void)actionNotificationDataA:(id)Sender 
{ 
    isNotifCall = YES; 

    . 
    . 
    . 
    /// your Stuuf; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    isNotifCall = NO; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(actionNotificationDataA:) 
              name:@"reloadDataActivity" 
              object:nil]; 

    [NSThread detachNewThreadSelector:@selector(allData:) toTarget:self withObject:nil]; 

} 

方法

您的通知方法(我不知道参数,所以我拿id

-(void) allData:(id)Sender 
{ 
    if(!isNotifCall) 
    { 
    /// your allData method's Stuuf; 

    } 
} 
相关问题