课堂笔记02:OC 和 C 对比

iOS 开发765 字

本小节知识点:

  1. 源文件对比
  2. 关键字对比
  3. 数据类型对比
  4. 流行控制语句对比
  5. 面向对象新增特性
  6. 面向对象新增语法
  7. 新增异常处理

源文件对比

  • C 语言常见源文件 .h 文件, .c文件
文件扩展名源类型
.h头文件,用于存放函数声明
.cC语言源文件,用于实现头文件中声明的方法
  • OC 中源文件.h文件,.m 与.mm的实现文件
文件扩展名源类型
.h头文件,头文件包含类、方法、属性的声明
.m/.mm类的实现文件,参与编译的文件,用来实现类中声明的方法

关键词对比

  • C 语言的关键字都可以在 OC 源程序中使用
  • OC 新增呢个的关键字在使用时,注意部分关键字以“@”开头

对比图

数据类型对比

  • C 数据类型

脑图

  • OC 中的数据类型

脑图

类型描述
BOOL只有两个取值真和假
NsObject*OC 中的对象类型
id动态对象类型,万能指针
SEL选择器数据类型
block代码块数据类型
  • OC 中的类

    • Objective-C 是一种面向对象的语言,定义类时它的基本能力。
    • 那什么是类呢?类是用来描述对象的,它是一系列方法和属性的集合。
    • Objective-C 的类声明和实现包括两个部分:接口部分和实现部分
    • 想要定义方法也就是 C 语言中的函数,那么就必须先有类存在

流程控制语句对比

  • C语言中使用的流程控制语句OC中都可以应用
if 语句

switch语句

while语句

dowhile语句

for语句

break关键字

continue关键字
  • 增强for循环,用于快速迭代数组或者集合
  • C语言for循环
for (int i = 0; i < 10; i++){
        printf(“%d”,i);

}
  • OC增强for循环
for (NSString * name in NSArray){
        NSLog(@”%@”,name);
}

函数(方法)定义和声明对比

  • C语言中函数的声明和实现

    • 函数声明:int sum(int a,int b);
    • 函数实现:int sum(int a,int b){ return a+b; }
  • OC中的方法

    • 方法声明:- (int)sum:(int) a andB:(int) b;
    • 方法实现:- (int)sum:(int) a andB:(int )b{ return a+b; }
  • 注意: 方法只能写在类里面, 而函数可以写在任何地方

    • 对象方法,使用对象调用的方法
    • 类方法,使用类名调用的方法
对象方法

- (id)initWithString: (NSString * )name;

类方法

+ (MyClass *)createMyClassWithString: (NSString *)name;

面相对象新增特性

  • 封装性
  • 继承性
  • 多态性

object-class

面向对象新增语法

  • 属性生成器:用来简化代码

    • @property
    • @synthesize
//声明属性

@property (nonatomic,strong)NSString * name;

//合成属性

@synthesize name = _name;
  • 分类:在不修改原有类的情况下新增一个功能。

    • 分类与继承
    • 使用分类扩展类,无需子类化
@interface NSString (MyNSString)

- (NSString *) encryptWithMD5;

@end
  • 协议:类似于其他语言中的 interface

    • 使用协议声明方法
    • 协议类似于C#,java中的接口
@protocol MyProtocol

- (void)myProtocolMethod;

@end
  • Fundation框架:以后写 ios 天天会用这个东西,要花费好几天学习这一块。

    • 创建和管理集合,如数组和字典
    • 访问存储在应用中的图像和其他资源
    • 创建和管理字符串
    • 发布和观察通知
    • 创建日期和时间对象
    • 操控URL流
    • 异步执行代码

新增异常处理

  • 用于处理错误信息
  • 格式:

    • @try .... @catch .... @finally
  • 示例:
//创建对象car

Car *car = [Car new];

@try {
        //调用一个没有实现的方法
        [car test];
} @catch (NSException *exception) {
   NSLog(@"%@",exception.name);
} @finally {
        NSLog(@"继续执行!\n");
}
maksim
Maksim(一笑,吡罗),PHPer,Goper
OωO
开启隐私评论,您的评论仅作者和评论双方可见