po [NSThread currentThread]

时间:2011-09-19 15:21:18

标签: objective-c xcode nsthread

当我做[NSThread currentThread]时,我得到了

{name =(null),num = 4}

当我向左看时,我看到: enter image description here

看起来它是线程号6,而不是4.还有什么属性我们需要调用才能获得该线程数?

[NSThread currentThread] .number?虽然不存在。

3 个答案:

答案 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