二、Objective-c-项目的注意点
来源:互联网 发布:形容帅哥美女的网络语 编辑:程序博客网 时间:2024/05/21 23:34
1、框架的定义
在ios系统中,将一系列代码封装为动态库,并在其中放入描述其接口的头文件,这样的代码库就叫框架。而我们平常用的由静态库封装的代码库,严格意义上来说不是框架。
2、cocoa框架
在Mac OS系统中叫cocoa框架,在ios系统中叫Cocoa Touch框架。其实cocoa本身并不是框架,它里面集成了创建应用时所必备的框架。
Foundation是ios应用的基础框架,由Objective-C编写的。还有一个与之对应的CoreFoundation框架,它对应C语言的API。
在ios系统中有许多这样的框架对应,它们之间可以”无缝桥接”,即相互转换。
无缝桥接:主要作用是让ios的运行时系统把CoreFoundation的对象当作Objective-C对象,实现非常复杂。
还有一些如下框架:
CFNetwork、CoreAudio、AVFoundation、CoreData、CoreText
使用C底层API的好处是:可以围绕Objective-C的运行时系统提高效率,注意要进行内存管理。ARC只负责Objective-C的内存管理。
UIKit是构建ios平台应用中UI元素的框架,在Mac OS中对应的是AppKit.
3、NSCache缓存网络下载的图片
使用NSCache缓存的优点是:
1、当系统资源耗尽时,它可以自动增减缓存,会删除“最久未使用的”对象。
如果把内存中的图片缓存到字典时,需要手动删减
2、NSCache它是线程安全的,即开发者在不编写加锁的代码下,多个线程可以同时访问NSCache
4、用前缀避免命名空间冲突
Objective-C没有其它语言那种内置的命名空间(namespace)机制,所以命名时容易产生重名的类。可以变相的实现命名空间,为所有名称前都加上适当的前缀,所选的前缀是公司、应用程序或者二者有关联的名称,这样会使命名冲突减少许多。
常量命名规则
若常量局限于某“编译单元(即实现文件)”之内,则在前面加字母k;若常量在类之外可见,则通常以类名为前缀。
5、提供全能的初始化方法
当我们使用某个类时,尽量创建一个全能的初始化方法,在其它的构造方法中调用该全能初始化方法进行初始化。这样可以避免当类的数据结构发生改变时,而导致所有的构造方法都需要修改。
- (instancetype)init { return [self initWithHeight:0.0 withWidth:0.0];}//全能初始化方法- (ClassA *)initWithHeight:(CGFloat)height withWidth:(CGFloat)width { if (self = [super init]) { _width = width; _height = height; } return self;}
6、实现Description方法
该方法的作用是,NSLog打印一个对象时,会自动调用它,输出某个对象的信息。通过重写该方法,可以使打印的信息更随意更全面。
- (NSString *)description { return [NSString stringWithFormat:@"%f, %f>", _width, _height];}
debugDescription方法,是我们在lldb调试器下,po一个对象时,输出该对象信息的方法。
- (NSString *)debugDescription { return [NSString stringWithFormat:@"<%@: %p, %f %f>", [self class], self, _width, _height];}
7、类的头文件(.h)中尽量少引用其它头文件
当我们把引入的头文件放在类的头文件时,就会引入所有头文件的内容。若持续下去,则要引入许多根本用不到的内容,这样会增加编译的时间。
“向前声明”类,@class,可以解决的问题有:
1、在类的头文件中引用其它头文件造成编译时间长的问题
2、解决两个类头文件相互包含而导致一个类无法正常编译的问题
8、多用类型常量,少用#define宏定义预处理指令
define是编译器在编译时进行文本替换,没有类型。大量用宏定义会导致二进制文件变大。
而常量是共享一段内存空间,就算N处用到,也不会分配N块内存空间。通过static const可以保证常量只在当前文件中可用,且类型不变
#define NUM 0.3static const NSString *id = @"cellId";
- 二、Objective-c-项目的注意点
- Objective-C之注意点(一)
- 项目开发注意点(二)
- IOS开发——Swift和Objective-C交互时的一些注意点
- [IOS] Objective C 类初始化函数注意点
- c 的一些注意点
- C语言的注意点
- Objective-C:一些要注意的细节
- 【游戏客户端开发】 IOS开发——Swift和Objective-C交互时的一些注意点
- java SSH + extj 项目过程中遇到的问题及注意点(二)
- Objective-C: delegate的那点事儿
- Objective-C: delegate的那点事儿
- Objective-C的一些语言点梳理
- Objective-C: delegate的那点事儿
- Objective-C: delegate的那点事儿
- 嵌套应该注意的二点
- 大白话解析Objective-C(二):点语法
- 项目中关于date的注意点
- OTA升级流程简要概括
- 【图书】CSS重构:样式表性能调优
- 【第1101期】HTTPS中S带来的性能损失
- 51nod 1164 最高的奖励 V2 贪心+匈牙利算法
- 进程 线程 协程
- 二、Objective-c-项目的注意点
- ...
- libusb的介绍以及嵌入式移植
- linux 常用运维命令
- Unix/Linux(一)——关于open()函数的一些tips
- 第5章 ADO.NET简介
- 文章标题
- 播放器队列使用的优化
- SpringMVC入门->网站的初级框架