如何检查通知是否被调用然后不调用方法

时间:2013-08-24 07:59:39

标签: ios objective-c nsnotificationcenter

我在应用的viewDidLoad中有两个方法,我希望如果调用通知方法,则不应调用另一个方法。

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

以下是另一种方法。我希望如果没有调用通知方法,则应调用此方法:

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

否则,不应调用此方法。

2 个答案:

答案 0 :(得分:0)

只有在某处发布通知时才会调用第一个。但是当代码运行时,第二个将突然分离新线程。这可能会产生问题。

根据您的要求提出建议:

保持BOOL默认为NO。 然后在两种方法中检查boolValue是否为NO,然后仅在boolValueNO时运行代码并将boolValue更改为YES }。

答案 1 :(得分:0)

BOOL isNotifCall;放入.h file

在开始viewDidLoad方法时,将NO提交给isNotifCall,例如,

- (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];

}

NSThread 的方法(我不知道参数,所以我需要id

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

  .
  .
  .
  /// your Stuuf;
}

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

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

  }
}