jjzjj

NSThread

全部标签

iphone - 如何在 NSThread 中等待直到 iOS 中发生某些事件?

如何在NSThread中等待直到iOS中发生某些事件?例如,我们创建了一个NSThread并启动了一个线程循环。在线程循环内部,有条件检查消息队列是否有消息。如果有消息,那么它会调用相应的方法来做一些操作,否则它应该等到消息队列有新消息填充。是否有任何API或方法可用于等待某个事件发生?ForExampleNSThread*thread=[NSThreadalloc]....@selector(threadLoop)-(void)threadLoop{//ExpectingsomeAPIormethodthatwaituntilsomemessagespushedintothemess

ios - `[NSThread isMainThread]` 总是返回 YES

这段代码dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0),^{NSLog(@"MainThread?%d",[NSThreadisMainThread]);});显示我在主线程中。即使这样做:queue=dispatch_queue_create("nonMainQueue",NULL);仍然报告说我在主队列中。这似乎是becauseI'musingdispatchsync.这是否意味着我的代码与根本不使用dispatch_sync一样?另外:如果dispatch_sync什么都不做,那它还有

ios - `[NSThread isMainThread]` 总是返回 YES

这段代码dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0),^{NSLog(@"MainThread?%d",[NSThreadisMainThread]);});显示我在主线程中。即使这样做:queue=dispatch_queue_create("nonMainQueue",NULL);仍然报告说我在主队列中。这似乎是becauseI'musingdispatchsync.这是否意味着我的代码与根本不使用dispatch_sync一样?另外:如果dispatch_sync什么都不做,那它还有

ios - NSThread sleepfortimeinterval 阻塞主线程

我想模拟与服务器的通信。由于远程服务器会有一些延迟,我想使用它上面的后台线程[NSThreadsleepForTimeInterval:timeoutTillAnswer];线程是使用NSThread子类创建并启动的……但是我注意到sleepForTimeInterval正在阻塞主线程……为什么???默认情况下NSThread不是backgroundThread吗?线程是这样创建的:self.botThread=[[PSBotThreadalloc]init];[self.botThreadstart];更多信息:这是机器人线程子类-(void)main{@autoreleasepoo

ios - NSThread sleepfortimeinterval 阻塞主线程

我想模拟与服务器的通信。由于远程服务器会有一些延迟,我想使用它上面的后台线程[NSThreadsleepForTimeInterval:timeoutTillAnswer];线程是使用NSThread子类创建并启动的……但是我注意到sleepForTimeInterval正在阻塞主线程……为什么???默认情况下NSThread不是backgroundThread吗?线程是这样创建的:self.botThread=[[PSBotThreadalloc]init];[self.botThreadstart];更多信息:这是机器人线程子类-(void)main{@autoreleasepoo

objective-c - 可以在后台线程上创建 UIView 吗?

我知道UIView不是线程安全的,所以我不能在后台线程上添加View,要解决这个问题,可以在后台线程上创建UIView然后将它添加到主线程吗?注意:我没有在主线程上执行此操作的原因是因为我的实际代码要复杂得多,因此需要一些时间来创建所有View并填充值。我不希望UI在执行此操作时变得无响应,因此我正在尝试解决此问题。例如..-(void)addLabel//calledonbackgroundthread{UILabel*label=[[UILabelalloc]initWithFrame:CGRectMake(0,0,40,100)];[labelsetText:@"example"

objective-c - 可以在后台线程上创建 UIView 吗?

我知道UIView不是线程安全的,所以我不能在后台线程上添加View,要解决这个问题,可以在后台线程上创建UIView然后将它添加到主线程吗?注意:我没有在主线程上执行此操作的原因是因为我的实际代码要复杂得多,因此需要一些时间来创建所有View并填充值。我不希望UI在执行此操作时变得无响应,因此我正在尝试解决此问题。例如..-(void)addLabel//calledonbackgroundthread{UILabel*label=[[UILabelalloc]initWithFrame:CGRectMake(0,0,40,100)];[labelsetText:@"example"

ios - Grand Central Dispatch 与 NSThread

我为NSThread和GrandCentralDispatch(GCD)创建了一些测试代码:-(void)doIt:(NSNumber*)i{sleep(1);NSLog(@"Thread#%i",[iintValue]);}-(IBAction)doWork:(id)sender{for(inti=0;10>i;i++){NSNumber*t=[NSNumbernumberWithInt:i];[NSThreaddetachNewThreadSelector:@selector(doIt:)toTarget:selfwithObject:t];}sleep(1);dispatch_q

ios - Grand Central Dispatch 与 NSThread

我为NSThread和GrandCentralDispatch(GCD)创建了一些测试代码:-(void)doIt:(NSNumber*)i{sleep(1);NSLog(@"Thread#%i",[iintValue]);}-(IBAction)doWork:(id)sender{for(inti=0;10>i;i++){NSNumber*t=[NSNumbernumberWithInt:i];[NSThreaddetachNewThreadSelector:@selector(doIt:)toTarget:selfwithObject:t];}sleep(1);dispatch_q

ios - GCD 与 performSelectorInBackground/performSelectorOnMainThread

我是ios开发的新手。我有以下问题:何时使用GCD(dispatch_group_async,dispatch_async(dispatch_get_main_queue()...)以及何时使用performSelectorInBackground/performSelectorOnMainThread?这两者有什么不同。我知道当我们使用performSelectorInBackground时,我们创建了一个新的NSThread。但是我们用dispatch_group_async不就一样了吗?因为如果我们创建多个dispatch_group_async,就意味着我们需要在队列中提交多个