po [NSThread currentThread] - PullRequest
       9

po [NSThread currentThread]

2 голосов
/ 19 сентября 2011

Когда я делаю po [NSThread currentThread], я получаю

{name = (null), num = 4}

Когда я смотрю налево, я вижу: enter image description here

Похоже, это номер потока 6, а не 4. Кроме того, какие свойства нам нужно вызывать, чтобы получить номера потоков в любом случае?

[NSThread currentThread] .number? Хотя не существует.

Ответы [ 2 ]

6 голосов
/ 19 сентября 2011

Номера тем не имеют большого значения.

Экземпляр потока, тем не менее, является одиночным на поток. Вы можете использовать адрес NSThread по совпадению. Тем не менее лучше было бы окунуться в API mach_ * и получить идентификатор потока из этого API.

[NSThread currentThread] примерно столько же уникальных чисел, сколько вы получите. Если поток завершается, а затем создается новый поток, вы можете увидеть тот же адрес. API-интерфейсы Mach будут продавать что-то уникальное.

Что вы пытаетесь сделать?

0 голосов
/ 05 мая 2014

Вот ответ, который я отправил на NSThread номер на 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
...