effective—Objective—C 第七章阅读笔记

系统框架

熟悉系统框架

框架是指将一系列代码分装成动态库,并在其中放入描述其接口的头文件,这样做出来的东西叫做框架,所有的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]) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值