0

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

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

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

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

否则,不应调用此方法。

4

2 回答 2

0

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

对于您的要求的想法:

保持 aBOOL默认为NO. 然后在这两种方法中检查是否boolValue是,然后仅在是NO时运行代码并将其更改为。boolValueNOboolValueYES

于 2013-08-24T08:06:03.223 回答
0

放入BOOL isNotifCall;你的.h file.

viewDidLoad方法的开始,给予 NOisNotifCall如,

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

  }
}
于 2013-08-24T08:10:09.663 回答