系统框架
文章目录
熟悉系统框架
框架是指将一系列代码分装成动态库,并在其中放入描述其接口的头文件,这样做出来的东西叫做框架,所有的iOS平台的系统框架使用的是动态库。
还有个和Foundation相伴的一个框架,CoreFoundation,这个框架有很多的一个功能和Foundation有关系,这里我们介绍一下无缝桥接这个功能,他可以吧C语言的数据结构转化成我们的一个OC对象。
• CFNetwork 此框架提供了C语言级别的网络通信能力,它将 “BSD 套接字”(BSDsocket)抽象成易于使用的网络接口。而Foundation 则将该框架里的部分内容封装为Objective-C 语言的接口,以便进行网络通信,例如可以用 NSURLConnection 从URL
中下载数据。
• CoreAudio该框架所提供的C语言 API 可用来操作设备上的音频硬件。这个框架属于比较难用的那种,因为音频处理本身就很复杂。所幸由这套API 可以抽象出另外一套 Objective-C 式API,用后者来处理音频问题会更简单些。
• AVFoundation此框架所提供的 Objective-C对象可用来回放并录制音频及视频,比如能够在 UI 视图类里播放视频。
• CoreData此框架所提供的 Objective-C 接口可将对象放人数据库,便于持久保存°。CoreData 会处理数据的获取及存储事宜,而且可以跨越Mac OS X及iOS平台。
• CoreText此框架提供的C语言接口可以高效执行文字排版及渲染操作。
这里我们OC编程的底层调用了很多C语言级别的API,这样可以绕过OC的运行期的系统,从而提高执行速度。但是这里注意使用这个框架的时候,ARC是不负责这部分的内容的。
这里还有CoreAnimation和CoreGraphics两个框架。
要点
- 许多系统框架都可以直接使用。其中最重要的是 Foundation 与 CoreFoundation,这两个框架提供了构建应用程序所需的许多核心功能。
- 很多常见任务都能用框架来做,例如音频与视频处理、网络通信、数据管理等。
- 请记住:用纯C写成的框架与用 Objective-C写成的一样重要,若想成为优秀的Objective-C 开发者,应该掌握C语言的核心概念。
多用块枚举
我们一般情况下我们有些时候都采用for循环,这是我以前的习惯,但是这里让我们多采用块的一个遍历顺序。
for循环
for (int i = 0; i < objects.count; i++) {
}
这种便利方式只能便利我们的一个有序数组,因为其他的collection都是不均匀的。
NSEnumerator遍历
NSArray* ary = @[@"123"];
NSEnumerator* en = [ary objectEnumerator];
id obj;
while ((obj = [en nextObject]) != nil) {
}
这种写法的功能和标准的for循环类似,这种写法的优势主要是可以便利任何一种colleciton。
NSDictionary* ary = @{
@"123":@"123"};
NSEnumerator* en = [ary objectEnumerator];
id obj;
while ((obj = [en nextObject]) != nil) {
id value = ary[obj];
NSLog(@"%@", value);
}
快速遍历
for (id object in ary) {
}
这里主要还是多了一个in这个关键字
NSDictionary* ary = @{
@"123":@"123"};
for (id key in ary) {
id value = ary[key];
}
这样更加方便,同时如果需要反向遍历数组,可以采用下面的这种写法:
NSArray* ary = @[@"1234", @"123"];
NSEnumerator* en = [ary objectEnumerator];
id obj;
for (id key in [ary reverseObjectEnumerator])