美文网首页
系统框架,编程规范

系统框架,编程规范

作者: 海浪萌物 | 来源:发表于2017-05-19 21:28 被阅读9次

1、多用块枚举,少用for循环

NSArray *array ;

[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

//obj是当前对象,idx是针对的下标,以及指向布尔值的指针,第三个参数开发者可以终止遍历操作

*stop = NO;//终止操作

}];

NSSet *set;

[set enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {

//可以遍历set

}];

NSDictionary *dic;

[dic enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

//key是键,obj是值,这样做可以一下子得到键和值

}];

其中obj类型可以修改成指定的类型

2、构建缓存时选用NSCache而非NSDictionary

NSCache好处就是当系统内存警告时候,NSCache会自动删减缓存,还会先行删减久未使用的对象,,NSCache是线程安全的,并且他不拷贝键,而只是保留它

NSData *data;

NSCache *cache = [NSCache new];

cache.countLimit = 100;//最大缓存对象数目

cache.totalCostLimit = 5*1024*1024;//总开销上线5M,

[cache setObject:data forKey:@"cache" cost:data.length];

将NSPurgeableData和NSCache搭配使用;

NSPurgeableData *purgeData = [cache objectForKey:@"cache"];

if (purgeData) {

[purgeData beginContentAccess];

//使用purgeData的代码

[purgeData endContentAccess];

}else{

NSData *data;

purgeData = [NSPurgeableData dataWithData:data];

[cache setObject:purgeData forKey:@"cache"];

//使用purgeData的代码

[purgeData endContentAccess];

}

创建了NSPurgeableData对象后,其“purage引用计数”会自动多1,无需再次调用beginContentAccess,但是最后必须调用endContentAccess

3、精简initialize和load的实现代码

+(void)load

对于加入运行期系统的每个类以及分类来说,必定会调用此方法,而且仅调用一次。当包含类或分类的程序库载入系统时,就会执行此方法。如果类和分类都定义了load方法,则先调用类的,在调用分类里的。

load方法问题在于,执行load方法时候其他类的所有超类的load方法未必执行完,如果代码还依赖其他程序库,那么在执行该类的load方法时候无法判断依赖库的load方法是否执行完,所以在load 方法中使用其他类是不安全的。

load方法不遵循继承,load方法务必实现的精简一些,因为整个应用程序在执行load方法时候会阻塞。特别是加锁任务,总之,凡是想通过load方法在类加载之前执行某些任务的,基本都不行。

initialize

这个方法会在程序首次用到该类之前调用,且只调用一次。不能通过代码调用,只能通过系统调用。有个注意点就是,如果某个类未实现该方法,但是他父类实现了,那么该类和他的父类都会执行该方法。

initialize方法只应该用来设置内部数据,不应该在其中调用其他方法,即便是本类自己的方法,也最好别调用。

无法在编译期设定的全局常量,可以放在initialize里面初始化。

相关文章

  • 系统框架,编程规范

    1、多用块枚举,少用for循环 NSArray *array ; [array enumerateObjectsU...

  • 编程框架中的设计模式

    什么是框架 框架就是对某一类架构方案的可服用的设计和实现. 我们使用框架编程的时候,需要遵循框架的规范编写代码,比...

  • SpringBoot第一天上午

    1、SpringBoot是什么: SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所...

  • 第1章 springboot入门

    SpringBoot是什么 SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化...

  • 01springboot入门

    SpringBoot是什么SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是...

  • 11.Spring Boot / Spring Cloud

    1.什么是 spring boot? SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用...

  • (三)开始编程

    编程前的准备工作大致按照确定前端框架,统一编程风格,制定命名规范三步走。那么开始编程,实现静态页面时则大多按照各自...

  • 架构设计01

    一、掌握专业名词 系统 举例: 框架与架构框架是一种开发规范。 架构(Architecture):1、架构需要明确...

  • VSCode下c++工程环境搭建并配置调试工具

    VSCode版本:1.32.3 使用CMake作为编译系统; 使用cpplint作为代码静态扫描工具,编程规范遵循...

  • 开题

    iOS编程规范 2016.11.25(1.0版本) 目录 iOS编程规范........................

网友评论

      本文标题:系统框架,编程规范

      本文链接:https://www.haomeiwen.com/subject/efhuxxtx.html