本文目录一览:
- 1、OC可变参数问题?? 大神请进! stringWithFormat:……
- 2、stringWithFormat 和 initWithFormat 有何不同
- 3、请教关于stringWithFormat的作用
- 4、ios JSON解析常见错误
OC可变参数问题?? 大神请进! stringWithFormat:……
您好,如果您使用XCODE查看,您会发现NS_FORMAT_FUNCTION(1,2)是红颜色的字体,说明这是一个宏定义,它的作用是判定当您输入参数和不输入参数时,这个方法仍然可用
当您访问宏的时候,您就已经有些接近底层代码了,而再往下这个方法的源代码或者如何实现的您可能无法访问,一般来说不建议您去刨根问底弄明白OC中的源代码,因为OC不是开源语言
stringWithFormat 和 initWithFormat 有何不同
1、initWithFormat是实例办法
只能经由过程 NSString* str = [[NSString alloc] initWithFormat:@"%@",@"Hello World"] 调用,然则必须手动release来开释内存资料-stringwithformat
2、stringWithFormat是类办法
可以直接用 NSString* str = [NSString stringWithFormat:@"%@",@"Hello World"] 调用,内存经管上是autorelease的,不消手动显式release-stringwithformat
+ stringWithFormat:
类方法,返回一个autorelease的NSString实例,不用手动Release,在自动释放池中会自动释放。
initWithFormat:
实例方法,返回一个自己Alloc申请内存的NSString实例,根据OC内存管理黄金法则,管杀管埋,它则需要自己手动Release。
因为这两个方法只是在没有使用ARC的时候有所不同,一个需要手动Release一个则是自动进入autoreleasepool,所以在使用ARC的时候他们俩几乎没有什么区别。
请教关于stringWithFormat的作用
作用就是返回一些这个类特定的实例,比如字符串的[NSString stringWithFormat:@""];这个类方法,作用就是返回一串自定义的字符串,用法和[NSString alloc]...
ios JSON解析常见错误
iOS现有Json解析框架+ ( id)JSONObjectWithData:options: error:
不支持对非标准格式Json的处理(特殊字符包括“\“ 、 ”\n“、 ”\r“等)
如:
处理办法:1、将带有转义字符的数据转成字典(标准的JSON格式)再进行解析
2、用“\“进行转义
方案解决:
1。「 从根源上与API协调,尽量禁止返回值为NSNULL、null、nil这样的值。
2。「 客户端做处理,处理值为NSNULL、null、nil的情况。或者对消息进行转发 避免由于返回值有误导致程序崩溃的情况
问题:
前后端编码不一致导致解析后的值乱码、解析不了json数据、报错等。
解决方案:1、与后台规定好统一编码;2、客户端进行编码转换;
问题:
JSON数据中的浮点型值,用系统方法NSJSONSerialization
解析为字符串后,出现精度误差
解决方案:
1。「 后台以字符串形式返回
2。「 解析时数据格式化,明确转成doubleValue类型,如下:
NSString *value=[NSString stringWithFormat:@"%f",[dic[@"number"] doubleValue]];
如下数据解析
json局部数据这样的:{"content_id" : "666"}
NSString name = dic[@"content_id"]; 这句会产生类型错误
虽然是"666"这样的数字字符串,但还是要当成id类型stringWithFormat一下
NSString name = [NSString stringWithFormat:@"%@",dic[@"content_id"]];
如果JSON数据的key值为非String类型用NSJSONSerialization
解析会找不到key而报错:
BOOL manage = [content objectForKey:@"manage"];
上面结果无论JSON数据中manage字段是0还是1,manage都为YES。
用BOOL接收JSON字段时,需要增加boolValue转换:
BOOL manage = [[content objectForKey:@"manage"] boolValue];