objectivec-是否可以像线程一样调用NSNotificationQueue



是否可以运行类似的通知

-(void) testMethod
{
   [[NSNotificationQueue defaultQueue] enqueueNotification:[NSNotification    notificationWithName:@"TEST123" object:self userInfo:parms]postingStyle:NSPostNow  coalesceMask:NSNotificationNoCoalescing forModes:nil];
NSLog(@"test123");
//.....

使得"-(void)testMethod";继续执行NSLog,。。。,除此之外,由通知调用的方法确实完成了。有没有办法在没有线程的情况下解决它?

我认为您希望异步调用方法。答案是否定的:不能在同一个线程中异步调用方法。检查文档:

通知中心提供给观察员的通知同步地。换句话说postNotification:方法不返回,直到所有观察者接收并处理通知。发送通知异步使用NSNotificationQueue。

NSNotificationQueue不用于异步目的。参考:NSNotificationQueue对象(或简单的通知队列)充当通知中心(NSNotificationCenter实例)的缓冲区。通知中心在发布时分发通知,而放入队列的通知可能会延迟到当前通过运行循环的过程结束或运行循环空闲。重复的通知也可以合并,这样即使发布了多个通知,也只发送一个通知

最新更新