ios 运行c语言吗,iphone-检测代码是否在Objective-C的主线程上运行的正确方法是什么? (iOS)...

这个问题已经在这里有了答案:

检查当前线程是否为主线程 11个答案

我的代码需要保证在主线程上运行某些操作,但是调用可能来自后台线程。

为了检测背景情况,我使用了以下方法:

- (void)selectorToRunInMainThread:(id)arguments

{

// push to main thread

if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop])

{

[self performSelectorOnMainThread:@selector(selectorToRunInMainThread:) withObject:arguments waitUntilDone:NO];

return;

}

/*

... function content ...

*/

}

这适用于iOS 4和iOS 3.2,但不适用于iOS 3.1.3和更早版本。 在这些早期版本中,该函数将不断循环调用。

将比较更改为:

if (![[NSRunLoop currentRunLoop] isEqualTo:[NSRunLoop mainRunLoop]])

没有任何效果,它们仍然永远无法与相同的值进行比较。

我发现了一个似乎可行的解决方案,但我想先看看别人的建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值