This question already has answers here:
po [NSThread currentThread]
(2个答案)
已关闭8年。
当您打印NSThread的描述时,您将得到如下内容:
这个“num”可用吗?
这仅用于调试,因此不需要清除Apple的批准流程。
我通过使用运行时调用手动设置该ivar,然后通过NSLogging线程来对其进行测试。果然,描述反射(reflect)了这一变化。这显然没有记录,所以...
...使用风险自负。
这是一个有趣的练习,但是由于某种原因,事情通常是私有(private)的。除非所有其他路由都被彻底用尽,否则已发布的代码当然应该避免这种情况。
(2个答案)
已关闭8年。
当您打印NSThread的描述时,您将得到如下内容:
<NSThread: 0x1e511b70>{name = (null), num = 1}
这个“num”可用吗?
这仅用于调试,因此不需要清除Apple的批准流程。
最佳答案
该数字实际上是NSThread私有(private)实现类中的一个ivar。该类是_NSThreadInternal
,其名称是“_private”。在该对象内部,ivar是seqNum
。
如果您愿意依赖未记录的 key 路径,则可以直接将其拉出。可以做到这一点(并且可以很好地调用neilsbot来使用valueForKeyPath而不是运行时调用):
@implementation NSThread (GetSequenceNumber)
- (NSInteger)sequenceNumber
{
return [[self valueForKeyPath:@"private.seqNum"] integerValue];
}
@end
我通过使用运行时调用手动设置该ivar,然后通过NSLogging线程来对其进行测试。果然,描述反射(reflect)了这一变化。这显然没有记录,所以...
...使用风险自负。
这是一个有趣的练习,但是由于某种原因,事情通常是私有(private)的。除非所有其他路由都被彻底用尽,否则已发布的代码当然应该避免这种情况。
关于ios - iOS上的NSThread编号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15558411/
10-10 19:30