我正在NSNotificationCenter
使用类方法编写一个类别:
+(void)postNotificationName:(NSString*)name onMainThread:(BOOL)mainThread withObject:(id)object;
我这样做是为了确保我明确发送通知的线程,因为这给我带来了很多隐藏的问题。[NSNotificationCenter defaultCenter]
因此,为了避免每次通过调用每次发布通知时都进行额外的查找,我认为我必须只创建一个静态变量:
static NSNotificationCenter *defaultCenter;
+(void)postNotificationName:(NSString*)name onMainThread:(BOOL)mainThread withObject:(id)object
{
if(!defaultCenter)
defaultCenter = [NSNotificationCenter defaultCenter];
if(mainThread) {
dispatch_async(dispatch_get_main_queue(), ^{
[defaultCenter postNotificationName:name object:object];
});
} else {
[defaultCenter postNotificationName:name object:object];
}
}
我做的安全吗?如果defaultCenter
最初在后台线程上定义然后在主线程上再次使用怎么办 - 这是自找麻烦吗?有一个更好的方法吗?