1、设置AFNetworking自动清除数据结果的NSNull对象
AFNetworking中可以设置AFJSONResponseSerializer对象的removesKeysWithNullValues属性为YES,使AFNetworking自动清除请求结果中NSNull对象,这个功能比较强大,它是分析json之后做的清除操作,原类型为字符串的话转换为@“”,原类型为字典或数组的话转换为nil,代码如下(这是阳关欣晴CNNetworkProxy类中的代码片段):
AFJSONResponseSerializer *response = [[AFJSONResponseSerializer alloc] init];
response.removesKeysWithNullValues = YES;
2、项目开始时要和后台协商null的处理
项目开始前要和后台商量好,不能有空对象,即null,一律用默认值。
java中没有nil,java中用null表示空对象,转son后在转为oc则变为oc的空对象NSNull;oc中nil表示对象指向空,Nil表示类指向空;
3、压缩函数选区
苹果提供两种压缩函数,jpeg函数压缩出来的图片比较小,png函数压缩出来的图片说不定比原来的还要大,因为苹果做了一些处理,加入了一些安全数据
4、XXX转换为长整形时都必须使用longLongValue
NSString没有longValue这个属性,只有longLongValue属性,NSString使用longValue编译不报错,但是运行时出错,而其它类型的对象同时可以使用longValue和longLongValue属性,所以为了避免不必要的错误,一律使用longLongValue属性
5、NSString属性不能用weak修饰
NSString属性不能用weak修饰,在ios8时weak型的NSString传值是失败的,因为父控制器中的字符串已经释放,weak型字符串就指向空了;在iosx操作系统中都是错误的,但是其它系统自动修正了这个错误。
6、重写copy修饰的属性的设置函数
对于@property (nonatomic, copy) NSString *uid;类型的属性其设置函数应该如下:
- (void)setUid:(NSString *)did
{
_uid = [uid copy];//copy必须有,否则只是strong修饰的属性
}
copy修饰的属性必须这么写才能做到真正的 copy,否则只是相当于strong修饰的属性
7、局部操作tableview时偶尔崩溃的解决方案
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
8、设置自定义cell的背景颜色
自定义cell的设置背景色应该对self.contentView设置,对self设置不起作用
9、Xcode如下设置,则debug时可以打印self.frame等
10、scrollView滚动时自动收起键盘
在xib中设置scrollView的keyboard属性为Dismiss on drag,即可使的scrollView滚动时自动收起键盘。