如何在没有警告的情况下在Xcode中打印地址

问题描述:

下面的代码工作正常,地址被打印,但给出了“错误类型”警告。我对Xcode相当陌生,并且期望将指针无意义地转换为无符号的。如何在没有警告的情况下在Xcode中打印地址

{NSLog(@"Released <%@> at %X, retain count now %lu", newEntry, newEntry, [newEntry retainCount]);} 
+0

retainCount是没用的。别叫它。 – bbum 2012-03-09 15:49:48

+0

@bbum呃,当你在学习的时候,retainCount其实很有趣。 – 2012-03-09 23:39:13

+1

不是真的; “retainCount”充其量是误导性的。 http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/ – bbum 2012-03-09 23:54:32

正确格式说明用于指针地址%P:

NSLog(@"Released <%@> at %p, retain count now %lu", newEntry, newEntry, [newEntry retainCount]); 
+0

非常感谢 - 约翰 – 2012-03-09 14:25:11

%P是用于指针。信息可以通过查看字符串编程指南在格式说明符下找到

要打印任何实例变量的地址,您需要使用%p。

NSLog(@"Address %p", newEntry); 

也许你应该考虑这一点 - 它是一个更通用的解决方案 http://vgable.com/blog/tag/nslog/