Con số này thực sự là một Ivar trong lớp thực hiện tin NSThread của. Lớp là _NSThreadInternal
, và tên của nó là Bên trong đối tượng đó, ngà là seqNum
.
Bạn có thể kéo nó trực tiếp nếu bạn sẵn sàng dựa vào các đường dẫn chính không có giấy tờ. cuộc gọi):
@implementation NSThread (GetSequenceNumber)
- (NSInteger)sequenceNumber
{
return [[self valueForKeyPath:@"private.seqNum"] integerValue];
}
@end
Tôi đã thử nghiệm bằng cách đặt thủ công ngà voi đó bằng các cuộc gọi thời gian chạy và sau đó NSLogging chuỗi. Chắc chắn, mô tả phản ánh sự thay đổi. Điều này rõ ràng là không được ghi lại, vì vậy ...
... tự chịu rủi ro.
Đó là một bài tập thú vị, nhưng mọi thứ thường riêng tư vì một lý do. Mã được vận chuyển chắc chắn nên tránh những thứ như thế này trừ khi tất cả các tuyến đường khác đã cạn kiệt hoàn toàn.
Nguồn
2013-03-21 22:08:02
Có thể nó nằm trong '- [ luồngDictionary] '? (Bạn có thể lưu trữ thông tin địa chỉ luồng trong 'NSThread''s _threadDictionary _...) –
nielsbot
Ý tưởng tuyệt vời, nhưng không có súc sắc: Nó trống. :) –
Đó không phải là con trỏ của nó sao? Có thể không giống với ID luồng mà NSLog in. –