当我做[NSThread currentThread]时,我得到了
{name =(null),num = 4}
当我向左看时,我看到:
看起来它是线程号6,而不是4.还有什么属性我们需要调用才能获得该线程数?
[NSThread currentThread] .number?虽然不存在。
答案 0 :(得分:6)
线程数字几乎没有意义。
但是,线程实例是每个线程的单例。你可以巧合地使用NSThread的地址。更好的是,还是要深入到mach_ * API并从该API中获取线程ID。
[NSThread currentThread]
与你得到的数字一样独特。如果线程终止然后创建了新线程,您可能会看到相同的地址。马赫API将会出售一些与众不同的东西。
你想做什么?
答案 1 :(得分:0)
对于 Swift 5: 这是一个私有变量,但可以直接使用 keypath 访问:
Thread.current.value(forKeyPath: "private.seqNum")!
答案 2 :(得分:-2)
以下是我发布到NSThread number on iOS?的答案:
@implementation NSThread (ThreadGetIndex)
-(NSInteger)getThreadNum
{
NSString * description = [ self description ] ;
NSArray * keyValuePairs = [ description componentsSeparatedByString:@"," ] ;
for( NSString * keyValuePair in keyValuePairs )
{
NSArray * components = [ keyValuePair componentsSeparatedByString:@"=" ] ;
NSString * key = components[0] ;
key = [ key stringByTrimmingCharactersInSet:[ NSCharacterSet whitespaceCharacterSet ] ] ;
if ( [ key isEqualToString:@"number" ] || [ key isEqualToString:@"num" ] )
{
return [ components[1] integerValue ] ;
}
}
@throw @"couldn't get thread num";
return -1 ;
}
@end