Ios 尝试打印单个未格式化整数时出现NSLog错误
嗨,这是我使用Objective-C的第三天了。今天我写了几个简单的程序,遇到了以下警告 main.m:19:5:警告:传递'NSLog'的参数1将从整数生成指针,而不使用强制转换[默认情况下启用] NSLog(res) 最终导致分段错误。。这是我的节目Ios 尝试打印单个未格式化整数时出现NSLog错误,ios,objective-c,nslog,Ios,Objective C,Nslog,嗨,这是我使用Objective-C的第三天了。今天我写了几个简单的程序,遇到了以下警告 main.m:19:5:警告:传递'NSLog'的参数1将从整数生成指针,而不使用强制转换[默认情况下启用] NSLog(res) 最终导致分段错误。。这是我的节目 #import <Foundation/Foundation.h> @interface SomeClass: NSObject { int x; } @property int x; @end @implementati
#import <Foundation/Foundation.h>
@interface SomeClass: NSObject
{
int x;
}
@property int x;
@end
@implementation SomeClass
@synthesize x;
@end
int main(){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init];
SomeClass * obj = [[SomeClass alloc]init];
obj.x =20;
int res = obj.x;
NSLog(res); //error
/* But the error was not seen when I replaced the above statement with
NSLog(@"The value is : %d",res);
*/
[pool drain];
return 0;
}
请帮助我理解为什么NSLog会这样做?我哪里出错了?
谢谢…您不能像这样使用NSLog,您需要指定控制字符串并使用like:
NSLog(@"%d",res);
应为NSLog()
指定格式,有关详细信息,请查看
NSLog
将错误消息记录到Apple System Log facility
void NSLog(NSString*格式,…)代码>
讨论
只需调用NSLogv,向其传递可变数量的参数。
可用性
NSLogv
将错误消息记录到Apple System Log facility
void NSLogv(NSString*格式,va_列表参数)代码>
讨论
将错误消息记录到Apple系统日志工具(参见手册3
asl)。如果STDERR_文件未重定向任何文件描述符
从默认值或将成为tty,它也将被写入其中。
如果要将输出定向到其他地方,则需要使用自定义
伐木设施
消息由时间戳和前缀为的进程ID组成
你传进来的绳子。您可以使用格式字符串组合此字符串,
格式,以及要插入字符串的一个或多个参数。这个
这些函数允许的格式规范是
通过NSString的格式化功能理解(这不是
格式转义和标志集必须由printf理解)。
支持的格式说明符在“字符串格式”中描述
说明符”。如果出现错误,则在错误消息中添加最终硬返回
格式中不存在
通常,您应该使用NSLog函数,而不是调用此函数
直接起作用。如果您直接使用此函数,则必须
通过调用
标准的C宏VAU启动。完成后,您必须同样
调用此列表的标准C宏va_end
NSLogv的输出是序列化的,因为一个进程中只有一个线程
可以一次执行上述写入/记录操作。全部的
尝试在下一个线程之前写入/记录消息
可以开始尝试
NSLogv的效果不会与子系统序列化,而不是
上面讨论的那些(如标准I/O包),而不是
对这些子系统产生副作用(例如导致缓冲
要刷新的输出,这可能是不需要的)。可用性
NSLog的第一个参数是NSString
,它应该是一个包含0个或更多格式说明符的字符串
使用:
或者只是:
NSLog(@"%d", res);
有关详细信息,请查看NSLog的参考文档。您应该指定编译器,指定要在日志中打印的数据类型
NSLog(@"%d",res);
切勿直接使用NSLog(变量)
。相反,对于整数使用NSLog(@“%d”,变量)
,对于对象使用NSLog(@“%@”,对象)
您不能像那样声明NSLog
,请参阅NSLog
的教程,它可能对您有用
Objective-C有许多内置数据类型:
int–整数常量
浮点–带分数分量的实数
double–双精度浮点数
char–单个字符
short–短整数(2字节)
长–双短
长-长-双倍
布尔-布尔
实用程序函数NSLog()
可用于打印到Xcode中的调试控制台NSLog()
使用NSString
格式化服务。创建NSString
最简单的方法是使用@“
表示法。在格式字符串中,%
是值的占位符。%
后面的字符确定期望值,可以是int或float等。如果我们声明一个整数“int i=5
”,想要用NSLog()打印i的值
我们可以用NSLog(@“i的值是%d”,i);
您可以使用%d
打印int的值,使用%f
打印浮点值,使用%c
打印字符。有关NSString格式化方法支持的所有格式说明符的完整列表,请阅读文档
更多参考
继续学习……)
NSLog(@"%d", res);
NSLog(@"%d",res);