• OC和C对比


    1.源文件对比

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

    2.关键字对比

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

    3.数据类型对比

    • C语言数据类型

    • OC数据类型

    类型描述
    BOOL 只有两个取值真和假
    NSObject * OC中的对象类型
    id 动态对象类型,万能指针
    SEL 选择器数据类型
    block 代码块数据类型
    • OC中的类
      • Objective-C是一种面向对象的语言,定义类是它的基本能力。
      • 那什么是类呢?类是用来描述对象的,它是一系列方法和属性的集合
      • Objective-C的类声明和实现包括两个部分:接口部分和实现部分。
      • 想要定义方法也就C语言中的函数,那么就必须先有类的存在

    4.流程控制语句对比

    • C语言中使用的流程控制语句OC中都可以应用
      if 语句
      switch语句
      while语句
      do while语句
      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);
      }
      

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

    • 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;
    

    6.面相对象特性

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

    7.面向对象新增语法

    • 属性生成器
      • @property
      • @synthesize
    //声明属性
    @property (nonatomic,strong)NSString *name;
    
    //合成属性
    @synthesize name = _name;
    
    • 分类
      • 分类与继承
      • 使用分类扩展类,无需子类化
    @interface NSString (MyNSString)
    
    - (NSString *) encryptWithMD5;
    
    @end
    
    • 协议
      • 使用协议声明方法
      • 协议类似于C#,java中的接口
    @protocol MyProtocol
    
    - (void)myProtocolMethod;
    
    @end
    
    • Fundation框架
      • 创建和管理集合,如数组和字典
      • 访问存储在应用中的图像和其他资源
      • 创建和管理字符串
      • 发布和观察通知
      • 创建日期和时间对象
      • 操控URL流
      • 异步执行代码

    8.新增异常处理

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

      • @try .... @catch .... @finally
    • 示例

    //创建对象car
    Car *car = [Car new];
    @try {
    //调用一个没有实现的方法
        [car test];
    }@catch (NSException *exception) {
        NSLog(@"%@",exception.name);
    }@finally {
        NSLog(@"继续执行!
    ");
    }
  • 相关阅读:
    hdu 4332 Constructing Chimney 夜
    poj 2449 Remmarguts' Date 夜
    poj 2728 Desert King 夜
    poj 1639 Picnic Planning 夜
    poj 1125 Stockbroker Grapevine 夜
    poj 3621 Sightseeing Cows 夜
    hdu 4333 Revolving Digits 夜
    hdu 4345 Permutation 夜
    hdu 1874 通畅工程续 夜
    es6(二)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6476831.html
Copyright © 2020-2023  润新知