我在应用的viewDidLoad
中有两个方法,我希望如果调用通知方法,则不应调用另一个方法。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(actionNotificationDataA:)
name:@"reloadDataActivity"
object:nil];
以下是另一种方法。我希望如果没有调用通知方法,则应调用此方法:
[NSThread detachNewThreadSelector:@selector(allData:) toTarget:self withObject:nil];
否则,不应调用此方法。
答案 0 :(得分:0)
只有在某处发布通知时才会调用第一个。但是当代码运行时,第二个将突然分离新线程。这可能会产生问题。
根据您的要求提出建议:
保持BOOL
默认为NO
。
然后在两种方法中检查boolValue
是否为NO
,然后仅在boolValue
为NO
时运行代码并将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;
}
}