作者:不及格的程序员-八神
- 要注意不支持的特性
比如你的手持设备不支持发送短信或邮件的话,创建该类型的类时将返回nil...,这与我们平常习惯性的理解不同,如果是我设计我会让它抛出异常可能会更好,至少不需要查api文档就知道怎么回事。
- 设备的方向
当你在window上连续添加两个景色模式的视图控制器的时候,第二个视图的方向会保持人像模式,并且它的shouldAutorrotateToInterfaceOrientation方法不会被触发...
- 根视图中的输出口
这个算不算,可以根据开发人员的个人理解而定,按传统编程想法,当从nib文件实例化一个视图控制器时,我觉得视图中的所有输出口控件都会自动初始化,但是苹果的模式不是,它需要激发根视图view属性,确认将下面的所有子视图连接到输出口上.
- 在烦忙的工作开始之前,先播放动画
这又是一个苹果模式,如果你想在下载文件的时候同时播放等待动画,如果你先去执行(注意是直接执行而不是延时执行)下载代码,那么前面的动画将在烦忙的代码执行完毕后播放,显然不是我们要的.
[activityIndicator startAnimating]; [self performSelector:@selector(someMethod) withObject:nil afterDelay:0.0];
这是苹果关于屏幕旋转问题的答QA,里面也说了window仅支持第一个视图的旋转....
自定义表格中的uiimageview与button图片的延迟显示问题,button没有问题。
但uiimageview显示会出现问题,如果你在本地文件,显示成功率会大,如果是网上的图片,就不会显示了。
2013-06-25日找到原因:自定义属性self.imageView 与系统属性同名了,改个名子 就都正常了。。。。。
[self setNeedsLayout] 导致了最后面的图片视图,在异步加载完成时,跑来了最前面,就是说它的z-index改变了,结果会把其它的标签视图挡住。。。
#import "InfoListTableCell.h" #import "InfoListEntity.h" @implementation InfoListTableCell - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ -(void)updateCellContent:(id)obj { InfoListEntity *entity = (InfoListEntity*)obj; self.ownEntity = entity; self.labTitle.text = entity.title; [entity.imageURL getCacheDataDir:@"cacheDir" completionHandler:^(NSData *data, NSError *error) { //dispatch_async(dispatch_get_main_queue(), ^ //{ self.imageView.image = [UIImage imageWithData:data]; [self setNeedsLayout]; 如果是网上下载,这句非常重要,有本地缓存就不需要,为什么? //}); }];
南来地,北往的,上班的,下岗的,走过路过不要错过!
======================个性签名=====================
之前认为Apple 的iOS 设计的要比 Android 稳定,我错了吗?
下载的许多客户端程序/游戏程序,经常会Crash,是程序写的不好(内存泄漏?刚启动也会吗?)还是iOS本身的不稳定!!!
如果在Android手机中可以简单联接到ddms,就可以查看系统log,很容易看到程序为什么出错,在iPhone中如何得知呢?试试Organizer吧,分析一下Device logs,也许有用.