这个问题在这里已经有一个答案:>
po [NSThread currentThread]2
当您打印NSThread的描述时,您会得到如下内容:
当您打印NSThread的描述时,您会得到如下内容:
<NSThread: 0x1e511b70>{name = (null),num = 1}
这个“num”是不是可以使用?
这仅用于调试,因此不需要清除Apple的审批流程.
解决方法
这个数字实际上是NSThread的私有实现类中的一个ivar.类为_NSThreadInternal,其名称为“_private”.在该对象内,ivar是seqNum.
如果您愿意依靠无证密钥路径,您可以直接拉.这样做(和使用valueForKeyPath而不是运行时调用好的调用neilsbot):
@implementation NSThread (GetSequenceNumber) - (NSInteger)sequenceNumber { return [[self valueForKeyPath:@"private.seqNum"] integerValue]; } @end
我通过手动设置该ivar与运行时调用,然后NSLogging线程测试它.果然,描述反映了变化.这显然没有记录,所以…
…使用您自己的风险.
这是一个有趣的练习,但事情通常是私人的.运送的代码一定要避免这样的事情,除非所有其他的路线已经彻底耗尽.