2009-04-29 25 views

Trả lời

36

Đối số cho NSLog cần phải được một NSString, vì vậy bạn muốn

NSLog(@"%p", &myIntVar); 
+1

Tốt hơn, chúng tôi @ "% p". % x định dạng một giá trị số nguyên như hệ thập lục phân, trong khi% p là đặc biệt cho con trỏ, và bổ sung miếng đệm đại diện hệ thập lục phân nó in. –

+0

Điểm tốt! Tôi đã cập nhật câu trả lời cho phù hợp :) – smorgan

4

Hãy thử:

NSLog(@"%p", &myIntVar); 

hoặc

NSLog(@"%lx", (long)&myIntVar); 

Phiên bản đầu tiên sử dụng in con trỏ cụ thể định dạng, giả định rằng tham số được truyền là một con trỏ, nhưng xử lý nội bộ nó như một thời gian dài.

Phiên bản thứ hai lấy địa chỉ, sau đó chuyển nó thành số nguyên dài. Điều này là cần thiết cho tính di động trên nền tảng 64 bit, bởi vì không có bộ định dạng định dạng "l", giả sử rằng giá trị được cung cấp là một số nguyên, thường chỉ dài 32 bit.

+1

Tôi khuyên bạn nên chống lại phiên bản thứ hai, bạn không đạt được bất cứ điều gì. % p đã hoạt động như mong đợi trên nền tảng 32 hoặc 64 bit. –

+0

Apple đặc biệt đề cập đến chính phương thức sau: http://developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1 – Alnitak

0

Nslog (@ "% x", & myIntVar); % x là dài int hoặc bạn có thể in như Nslog (@ "% p", & myIntVar); % p là dành cho con trỏ

Các vấn đề liên quan