二、Objective-c-项目的注意点

9 篇文章 0 订阅
7 篇文章 0 订阅

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.3
static const NSString *id = @"cellId";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值