[iphone] 현재 메서드 호출의 스레드 ID 가져 오기

현재 메서드가 실행중인 현재 스레드 ID를 인쇄하는 방법이 있습니까?

(objective-c 제발)



답변

NSLog(@"%@", [NSThread currentThread]);


답변

#include <pthread.h>
...
mach_port_t machTID = pthread_mach_thread_np(pthread_self());
NSLog(@"current thread: %x", machTID);


답변

Swift 5에서

print("Current thread \(Thread.current)")


답변

Swift에서

print("Current thread \(NSThread.currentThread())")


답변

에서 Swift4

print ( “\ (Thread.current)”)


답변

다음과 같이 해킹 할 수 있습니다 (예쁘게 인쇄되지만 번호를 얻을 때까지 계속해서 분할 할 수 있습니다).

+ (NSString *)getPrettyCurrentThreadDescription {
    NSString *raw = [NSString stringWithFormat:@"%@", [NSThread currentThread]];

    NSArray *firstSplit = [raw componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"{"]];
    if ([firstSplit count] > 1) {
        NSArray *secondSplit     = [firstSplit[1] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"}"]];
        if ([secondSplit count] > 0) {
            NSString *numberAndName = secondSplit[0];
            return numberAndName;
        }
    }

    return raw;
}


답변