ios 编程实战(iOS 7 Programming Pushing the Limits)读书笔记20151207

本来准备昨天上传的,但是简书 大姨妈了。囧rz!

用半透明实现层次和上下文

github地址

1,截取屏幕代码

    float scale = [UIScreen mainScreen].scale;
    UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, scale);
    [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:NO];
    __block UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

2,可以通过Category为现有的类添加方法

之前只是知道这个概念,但是很少使用,现在发现Category很方便的扩展了类方法,且降低了耦合,代码的复用率也极高。

3,变量、方法命名

虽然变量名你可以命名成任何名称,但是变量名一定要体现出变量的类型和作用,这样有助于阅读代码。
譬如,一个存储时间字符串的数组,你可以命名dates,但是如果别人从你的的数组中取得一个元素,根本不知道什么类型,而如果你命名成dateStrings就很明了了告诉使用者里面储存的是string类型的date数据。
同理,一个方法的命名要体现出这个方法的作用,如果带有参数,要体现出参数的类型和参数的意义。

4,使用分类的坏处

从技术上讲,分类可以覆盖原有方法,会导致令人发疯的bug,而且相当难调试出来。为了避免覆盖原类方法,推荐给分类方法加上前缀.

5,+load方法

分类是在运行时附着在类上的,所以分类可能会在很晚的时间才被添加进来。但是oc提供了一个方法+(void)load;当分类第一次运行时就会调用。每个load方法都会被调用一次,而且不应该调用【super load】方法。

6,关联引用

关联引用允许开发者为类添加键值数据。这样就可以为分类中添加属性了。
关联是基于键的内存地址,而不是值的,所以一般会用为赋值的static char 变量作为键的原因。
关联可以像属性那样添加copy,assign等语义。
意味着可以用关联来监控对象什么时间销毁。可以作为调试的技术手段或者执行清理工作等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,894评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,200评论 19 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,452评论 30 472
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 9,261评论 0 7
  • 对于对象的同步和异步的方法,我们在设计自己程序的时候,一定要考虑问题的整体性,不然就会出现数据不一致的错误,脏读。...
    养码哥阅读 3,325评论 0 1

友情链接更多精彩内容