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线程测试它.果然,描述反映了变化.这显然没有记录,所以…

…使用您自己的风险.

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...