代码之家  ›  专栏  ›  技术社区  ›  Gordon Childs

调用performSelectorOnMainThread=>多线程应用程序?

  •  4
  • Gordon Childs  · 技术社区  · 16 年前

    [self performSelectorOnMainThread:@selector(rollBar:)
          withObject:nil
          waitUntilDone:false];
    

    引起 [NSThread isMultiThreaded] 要报告我的应用程序
    已经变成多线程。我还以为那是应该的

    一个线程中的消息不需要这样做。

    这个问题和我的不一样 this


    rollBar: 打电话 [m_progress_bar incrementBy: 0.5]; .
    NSProgressIndicator 负责

    我不知道。

    惊人地 [m_progress_bar usesThreadedAnimation]
    返回 NO ,即使当我的应用程序挂起时,该栏也会显示动画。

    1 回复  |  直到 8 年前
        1
  •  6
  •   Ben Gottlieb    16 年前

    你确定吗?我将以下代码放在appDelegate的init方法中:

    NSLog(@"Multi-threaded before? %@", [NSThread isMultiThreaded] ? @"Yes" : @"No");
    [self performSelectorOnMainThread: @selector(setDelegate:) withObject: self waitUntilDone: NO];
    NSLog(@"Multi-threaded after? %@", [NSThread isMultiThreaded] ? @"Yes" : @"No");
    

    在控制台中得到了这个结果:

    2008-10-21 07:26:28.296 MyApplication[82963:20b] Multi-threaded before? No
    2008-10-21 07:26:28.297 MyApplication[82963:20b] Multi-threaded after? No
    

    NSLog(...) 语句,它还告诉我它不是多线程的。