iOS开发——iOS进阶

原创 2016年06月01日 21:27:13
  1. 少导入头文件。
    尽量不要在头文件引入其它的头文件,如果需要用到实例,则用@class导入,可防止循环引用,并且不需要编译到头文件的全部信息,减少编译时间。
  2. 多用字面量语法,少用与之等价的方法。
    如使用NSString *string=@”a”;代替NSString *string=[[NSString alloc] initWithString:@”a”]; 使用NSArray *array=@[@”a”,@”b”];代替NSArray *array=[NSArray arrayWithObjects:@”a”,@”b”, nil];这样可以使语法更加清晰。
  3. 在对象内部读取或写入对象。
    在对象内部读取数据时,应该直接通过实例变量来读,如:return [NSString stringWithFormat:@”%@”, _name]; 在写入数据时,应该通过属性来写,如:self.name=@”aa”;
  4. 通知。
    在注册一个通知前,最好先注销一下此通知,防止数据处理后忘记注销或有同名的通知时发生混乱
  5. 局部刷新。
    使用tableView时,如果不需要全部刷新,最好使用局部刷新,可减少cpu的损耗。刷新某行:NSIndexPath *te=[NSIndexPath indexPathForRow:1 inSection:2]; [mainTV reloadRowsAtIndexPaths:[NSArray arrayWithObjects:te,nil] withRowAnimation:UITableViewRowAnimationNone];
    刷新某section:NSIndexSet * nd=[[NSIndexSet alloc]initWithIndex:1];
    [tview reloadSections:nd withRowAnimation:UITableViewRowAnimationAutomatic];
  6. 时间器。
    创建时间器的时候,在退出本页面的栈堆之前把时间器关掉,节省cpu。当一个页面里需要创建多个时间器,并且是执行相同的方法时,在创建之前先把时间器关掉,否则会出现数据多次获取的情况,尽管你用的时间器是一个全局变量,并且每次创建都是新建,原来的时间器也不会销毁的。
  7. 自动释放池。
    在ARC语法中,使用@autoreleasepool {}自动释放池可避免内存峰值。因为在自动释放池中,自动释放池会把里面的临时变量放到本池中,而不用放到主池中,每次循环后,自动释放池会把池内的变量清空,然后再创建自动释放池,这样还可以避免已经释放的对象被再次使用。但是也不要乱添加,要测试一下,确实需要避免内存峰值时再创建,因为就算自动释放池的消耗很低,但还是存在的。
  8. 调试内存管理问题(有时崩,有时不崩的情况)
    Product->Screem-Edit Screem->Run->Diagnostics->Enable Zombie Objects调出僵尸对象进行调试
  9. 快速枚举
    遍历数组时,使用快速枚举for(id obj in array){};
    如果需要知道下标,则使用基于块的快速枚举[indexArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    //dosomething with obj and idx
    if(){//符合条件时停止,相当于break
    *stop=YES;
    }
    }];
    遍历字典时,使用基于块的快速枚举,可以同时获得key和value
    [dic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
    // dosomething with key and obj

    if(){//符合条件时停止,相当于break
    
        *stop=YES;
    }
    

    }];
    如果知道了具体类型,则可使用具体的oc类型代替id类型。

  10. 延迟加载或添加
    使用scrollview时,当不需要显示的页面和数据,可使用延迟加载,在即将需要使用的时候才加载,而不是一开始就全部加载。在做一些需要点击某个按钮后才会出现的页面,也使用延迟加载,在点击的时候才布局,当然不是每次都新建,而是判断为nil时新建,不为nil时显示。

  11. 当你需要点击self.view收起键盘时,不需要为self.view添加一个单击手势,然后再在手势方法里面一个个地resignFirstResponder了,只需要用到控制器自带的一个方法即可

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}
  1. 待续……….
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS开发之如何进阶

iOS论坛里有朋友要求回答帖子,帖子的标题是: 想学IOS开发高阶一点的东西,从何开始,然后我吧啦吧啦回答写了很多。既然敲了那么多字,我就把我写的回复也贴到博客里来分享,希望能对大家有帮助。欢迎大家也...
  • super_man_ww
  • super_man_ww
  • 2016年10月19日 09:12
  • 299

iOS初级开发工程师进阶之路

我觉得是时候,也有必要,承认一下自己的错,压制一下趾高气扬的自己,在知乎上看到一个帖子,有点被打击到了.帖子中涉及到的问题,我给贴出来,各位小伙伴们一起开探讨一下,问题的答案,有知道的请在后面留言 ...
  • qq_36819141
  • qq_36819141
  • 2017年02月27日 09:58
  • 639

读<iOS开发进阶>有感

花了两天时间, 零零散散看完了这本书。总的来说, 比较失望吧。花点时间记录下。第一次看到这本书, 是在看唐巧大神博客的时候看到的  ---------->  《iOS开发进阶》即将出版那时候, 就被吸...
  • hitwhylz
  • hitwhylz
  • 2015年01月16日 21:43
  • 2422

基于Cocos2D的IOS游戏开发进阶与实践 —— Stage 1 —— 学习笔记

Xcode开发环境讲解 General页面 这一部分会根据iPhone和iPad的不同略有区别 可以针对不用屏幕不用分辨率设置App图标 Lau...
  • rnclcl
  • rnclcl
  • 2014年02月01日 23:22
  • 1086

iOS进阶面试题----经典10道

OneV‘s Den在博客里出了10道iOS面试题,用他的话是:"列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术" 。  在这里給一份我的答案。 ...
  • xunyn
  • xunyn
  • 2013年12月10日 21:45
  • 97781

2017年iOS提高

1.全局常量正规写法:全局变量不能定义在自己类中,开发中便于管理所有的全局变量,通常搞一个GlobeConst文件,里面专门定义全局变量,统一管理,要不然项目文件多不好找。2.类方法中调用实例方法 [...
  • czb_Corbin
  • czb_Corbin
  • 2017年05月07日 17:04
  • 516

ios关于数据库第三方框架FMDB进阶用法

概述 上一篇讲述了FMDB的最基本用法,用到的例子是缓存一张学生表,表里面都是些简单的字段。然而我们在实际项目开发中,大都使用FMDB缓存数据列表,比如网易新闻的新闻列表,QQ动态列表等。遵循M...
  • CloudyBird
  • CloudyBird
  • 2016年03月23日 14:50
  • 1149

给想提高的ios程序员一些建意

合自己情况聊下iOS学习建议,这里不讲大道理,说说具体怎么做。欢迎大家拍砖 1、第一点要求 ,能比较顺畅的阅读官方的文档。如果你连官方的文档读起来都非常困难,那你还谈什么提高和进阶,咱们学习iO...
  • tiantian1980
  • tiantian1980
  • 2014年11月11日 14:40
  • 2333

iOS进阶之研究开源项目

著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:wjh2005 链接:https://www.zhihu.com/question/28518265/answer/887...
  • sunnyboy9
  • sunnyboy9
  • 2016年03月08日 15:38
  • 848

<iOS开发进阶> 干货汇总

之前看完了, 也做了相应的总结, 详见:今天花点时间, 把一些干货汇总下, 然后就可以和这本书say goodbye了。包括:p85 10.1.3p96 使用GCD后p99 后台运行p13...
  • hitwhylz
  • hitwhylz
  • 2015年01月28日 17:25
  • 2377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发——iOS进阶
举报原因:
原因补充:

(最多只允许输入30个字)