阳光欣晴工作期间杂记,包括xcode设置、常见bug等

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等

添加UIApplicationMain类型的Breakpoint,编辑该断点:
a、在symbol中填入UIApplicationMain
b、在action中选择Debugger Command,并在其下方输入框中输入expr @import UIKit
c、选中options复选框

10、scrollView滚动时自动收起键盘

在xib中设置scrollView的keyboard属性为Dismiss on drag,即可使的scrollView滚动时自动收起键盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值