触发我的静态库的委托方法后会出现一个奇怪的问题。首先,该项目有一个子项目,它是一个静态库(xcode 4.6 ios 6.x)。静态库根据事件触发自己的委托。App 实现了静态库的委托方法。在实现中,我使用以下内容访问 UI 元素并触发其他事件。Didgetnotified 是 lib 的委托方法。
- (void)didGetNotified
{
dispatch_async(dispatch_get_main_queue(), ^{
[self parseData];
NSNotificationCenter *notifyCenter = [NSNotificationCenter defaultCenter];
[notifyCenter addObserver:self
selector:@selector(updateUI)
name:@"updateUIN"
object:nil];
});
}
-(void) parseData {
//parse data and its ready now and send notification
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateUIN" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"updateUIN" object:nil];
}
-(void) updateUI {
//this method gets fired twice mostly
}
问题是updateUI
被调用了两次。我看不出我做错了什么。与线程有关吗?静态库委托不在主线程上。但我在主线程上使用调度。有人可以解释一下吗?预先感谢。