最近有点小忙,虽然还抽空去SH参加了iOS的Talk。主要做的是修改了个xCode4.x时代就有的项目,主要内容是添加对iOS7的支持并完成release。不曾想项目本身还有好多问题,在修复过程中发现这些问题都是容易犯错的地方。于是准备一一记录,权且作为一个总结。
本文已同步到iCocoa,欢迎访问。
通常情况下,iPad上使用spliteVC,这时如果需要弹出modalVC的时候,需要使用spliteVC来present。如果是用master弹出,当从横屏转向竖屏的时候,由于master会隐藏,所以弹出的modalVC也会消失。
对于iOS5系统,是不支持autolayout的,要支持这一部分系统的横竖屏旋转的时候,可以在nib文件里直接设置autosize,效果很直观。比如要实现如下的自适应:
只需要在nib文件里设置:
但是刚好项目中的文件没有使用nib,只得代码实现。根据nib的设置,我想当然的设置:
class="brush:objc;gutter:true;">self.redView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleBottomMargin;
发现一旋转view都找不到了。后来发现,如nib中设置的view 的autoresizemask的属性居然是:W+BM,所以代码实现应该是:
self.redView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleBottomMargin;
ASI中shouldAttemptPersistentConnection默认是YES,就是会把请求作Keep alive处理。有些人遇到的问题是request会发送2次的问题。而我这里的问题是依次请求服务器同一文件夹下的文件时,有时会返回
"The operation couldn’t be completed. Connection reset by peer", NSLocalizedDescription=A connection failure occurred
而据说服务器上没有log,我也不想深究,发现关闭长连接后,这个问题就会消失
ASI另外一个需要注意的地方是,request结束后的成功/失败的代理是路由到主线程的。有些需要在运行时在次线程慢慢上传下载的请求时,要注意到这一点。
读取statu bar 的orientation,否则会返回不确定的方向
比如,NSUInteger的类型不要用int读取。这个在64bit系统出来了以后,更需要注意。