2009-09-09 10 views
12

Trong phương thức dealloc cho một lớp, tôi sẽ in ra ID (hoặc một số định danh duy nhất khác) cho cá thể đang được deallocated như thế nào?ID trường hợp in cho NSLog?

- (void)dealloc { 
    NSLog(@"_deallocing: ??"); 
    [super dealloc]; 
} 

Điều này có thể không? Tôi chỉ cố gắng để có thêm một chút phản hồi trong bảng điều khiển như một trợ giúp cho việc học.

cảm ơn nhiều -gary-

Trả lời

6

Hãy thử điều này: info

- (void)dealloc { 
    NSLog(@"_deallocing: %@", self); 
    [super dealloc]; 
} 

Sản lượng này sẽ thêm một chút về đối tượng giao diện điều khiển. Tùy thuộc vào lớp học, bạn sẽ nhận được một địa chỉ bộ nhớ và tên lớp hoặc một cái gì đó chi tiết hơn. Nếu bạn muốn cho một cái gì đó chi tiết hơn trong các lớp học của riêng bạn, ghi đè phương pháp này và quay trở lại bất cứ điều gì bạn muốn:

-(NSString *)description { 
    return @"Something useful about this object"; 
} 
+0

Tuyệt vời, vì vậy tôi có thể giả định rằng "tự" chỉ đơn giản là truy cập mô tả mặc định của lớp học? – fuzzygoat

+0

Đúng vậy - hàm NSLog() thay thế% @ bằng mô tả của đối tượng đã cho. Phương thức -description của NSObject cung cấp giá trị mặc định. Xem ở đây để biết thêm thông tin về các công cụ hữu ích để làm với NSLog: http://www.cocoadev.com/index.pl?NSLog – iKenndac

+0

Điều gì xảy ra nếu bạn muốn ID cho một lớp khác? Ví dụ. Tôi có một biến thành viên 'NSMutableArray' và tôi muốn in ID cá thể của nó. –

52

Nếu bạn đặc biệt muốn địa chỉ bộ nhớ của đối tượng (mà tôi cho rằng có thể được coi là một " nhận dạng" nếu bạn không có một thực hiện trong lớp học của bạn), bạn có thể sử dụng này:

NSLog(@"deallocing %p", self); 

Điều này có thể khá hữu ích nếu bạn có nhiều hơn một thể hiện của một lớp học đặc biệt và đang cố gắng để xác định đó là nhận được dealloc'd khi nào.

+0

Cảm ơn bạn dmkash, thats một điểm tốt, nhiều đánh giá cao. – fuzzygoat

+0

Tài liệu về các thông số định dạng chuỗi: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html – LopSae