zoukankan      html  css  js  c++  java
  • 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(@"继续执行!
    ");
    }
  • 相关阅读:
    某个牛人做WINDOWS系统文件详解
    常用ASP脚本程序集锦
    LINUX基础:文件安全与权限
    proftpd+mysql+quota
    apache2.0.49tomcat5.0.19jk2建立virtualHost
    URL Redirection(转) Anny
    顶级域名后缀列表(转) Anny
    \u4E00\u9FA5意义 Anny
    How to POST Form Data Using Ruby(转) Anny
    How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转) Anny
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6476831.html
Copyright © 2011-2022 走看看