iOS上的NSThread号码?

前端之家收集整理的这篇文章主要介绍了iOS上的NSThread号码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> po [NSThread currentThread]2
当您打印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线程测试它.果然,描述反映了变化.这显然没有记录,所以…

…使用您自己的风险.

这是一个有趣的练习,但事情通常是私人的.运送的代码一定要避免这样的事情,除非所有其他的路线已经彻底耗尽.

猜你在找的iOS相关文章