佳为好友

原:iPhone编程小经验 -6

日期:2011.04.29
日期:2011.05.26
日期:2011.06.09
日期:2011.06.16
日期:2011.06.27
日期:2011.06.29

*自定义的类型,进行传递的时候,尽量使用retain的方式。否则,每次使用copy
的方式,每次添加新的变量,都要更新copy协议的内容, 很麻烦。

*成员变量的访问函数,最好不要处理的很复杂,尽量使用系统的就可以了。如
果需要复杂的操作,那么最好是使用 另外一个函数名和函数。例如,对于
MediaFile的attachment的set函数,因为要自动的根据1024*768缩放,因此重写了
系统的行为。但是,后来又要求对于来 自相机的要进行960*768的缩放,因此要
针对另外一个变量mIsComeFromCamera来决定行为。这样,在NSCopy协议的函数中
就引起问题了。
总之,如果操作另类的话,还是单独做个函数吧。

*UI的切换销毁等等,经常由于切换过快导致异常。其原因常常是,A页面在Load数据,但是还没有Load完,但是,由于页面切换,导致A页面被释放了。而后,ALoad完毕数据之后,进行页面更新,导致访问异常。
正常来说,应该不会出现这种情况,比如,在Load的时候锁死页面不允许切换,或者开启另外的线程进行切换,但是处理好对象的引用。
但是,实际上可能不会那么完美,很可能在你下载数据之时和锁死页面之间,用户的快速操作,导致了A的释放。
一个比较好的方法是:使用一个数组保存要释放对象,然后定义一个timer,每10s或30s进行一次操作,删除已经被废弃很久的对象。
当然,保存的时候,要保留当时的时间,用于比对。

*UITabBarController的UITabBarItem的标题通常可以在xib中设定。但是有时候发
现,当点击某个index后,该 index的标题变化了。这是因为,这个index的标题是
会根据当前ViewController的title变化的,因此如果你在代码中设定 了
viewcontroller的self.title = @"xxxx",那么标题就会变为xxxx。
如果你希望VC的title和item的title不相同,那么不要使用self.title而使用:

self.navigationController.navigationBar.topItem.title = @"My Title";

*NSOperationManager最好不要同时存在多个。因为,如果同时存在多个,则
**不能控制线程数量。
**相同的请求无法取消了。比如,恰好有2个请求相同图片的请求,则很可能两个Manager同时请求服务器,导致多出一次请求。并且,因为命名,位置等等原因还可能产生bug。
**Op的优先级也无法保证了。


*网站客户端软件中,如果要有持续化的操作的话,则一定要持续话最终的内存数据,而不要直接缓存网络请求的返回内容(通常是个Json值)。
因为一旦这么做了,那么会产生一些问题。众所周知,网站客户端软件比普通的Safari网页的优势在于:
1,暂时不需要看到的内容可以暂时不下载,即使是在一个页面中,例如爱拍动态页面的各个图片,只有下载看到时,才会下载。
2,如果只更新了部分内容,如评论信息,则不需要更改全部页面,只需要更改某条记录即可。
3,如果删除了某些内容,则也不必重新下载全部页面。
综上,也就是说,在最初返回的缓存内容之后,用户很可能会进行一些修改和删除等操作,如果直接缓存Json值,则导致这个数值并不是最后的结果。


+++++

posted on 2012-12-30 10:26 佳为好友 阅读(165) 评论(0)  编辑 收藏 引用 所属分类: UI


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2012年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

留言簿(1)

随笔分类

搜索

最新评论

评论排行榜