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语句
    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);
    }

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

02:OC和C对比的更多相关文章

  1. 嵌入式&iOS:回调函数(C)与block(OC)回调对比

    学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...

  2. OC和C对比

    1.源文件对比 C语言中常见源文件.h头文件,.c文件 文件扩展名 源类型 .h 头文件,用于存放函数声明 .c C语言源文件,用于实现头文件中声明的方法 OC中的源文件.h头文件,.m与.mm的实现 ...

  3. Objective-C 再谈OC指针,对比C++/Java/Swift

    1.Objective-C的指针 OC一直是人感觉比较变态的一门语言,为什么呢?因为它的每个变量都是指针型,多的都几乎让人忘了那个*的存在了. 比如我定义了一个Student的Class,new了st ...

  4. C,OC,C++语言对比

    1.C与OC.C++的区别: C语言的特点:面向过程 1)C语言是结构化语言,层次清晰,调试和维护比较容易 2)表现能力和处理能力比较强,可直接访问内存的物理地址 3)c语言实现对硬件的编辑,c语言课 ...

  5. 02. oc语言是动态语言

    参照着知乎上大神们给的解释,(https://www.zhihu.com/question/19918532)自己要总结下知识: 自己初级并没有理解 动态.静态.强类型.弱类型 语言的这些含义,区分. ...

  6. 02 (OC)* ViewController 的声明周期

    一. UIViewController 的 生命周期 代码 示例 #pragma mark --- life circle // 非storyBoard(xib或非xib)都走这个方法 - (inst ...

  7. OC基础笔记目录

    OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...

  8. OC基础(1)

    Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 *:first-child { margin-top: 0 !important; } body > *:last-chi ...

  9. Object C和C#的差异

    从C#到Object C,循序渐进学习苹果开发(1)--准备开发账号和开发环境 本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台开发苹果开发的一系列感想和体验历程,本系列文章是在起步 ...

随机推荐

  1. vs视图引入命名空间设置方法

    解决: 1.@using在cshtml的最上面,加上一句: @using Puzzle.Framework.Common 2.在View文件夹下面的web.config里面加: <system. ...

  2. NC 6系分配组织方法

    分配客户的方法 String[] customer = { cuVO.getPk_customer() }; ICustAssignService cs = NCLocator.getInstance ...

  3. 最详细的Axure动态面板使用教程

    1.打开[Axure]软件,在index文件上新建一个375*667大小的背景矩形并绘制页面. 具体如图所示. 2.在banner的位置上新建一个[动态面板],双击动态面板在其中新建state1.st ...

  4. 无法创建.gitignore文件,提示必须输入文件名称

    If you're using Windows it will not let you create a file without a filename in Windows Explorer. It ...

  5. SSH无法连上CentOS7的问题

    今天安装完带GNOME的CentOS后发现XShell无法连接上Linux. 原因是sshd服务没有开启.下面是解决办法: 1 ip addr 发现网卡名称为ens33 2 在/etc/sysconf ...

  6. mybatis不报错,但是查询结果为0

    [转载]https://blog.csdn.net/shenzhenNBA/article/details/46673327 在用MyBatis操作数据库的时候相信很多人都用到,当在判断null, 大 ...

  7. XML 解析的两种方法

    申请博客有一段时间了,一直没有写些什么,今天写一下被遗忘的 xml,因为 ios 现在一般都用 JSON,但毕竟还有一部分老一些的服务器还会有 xml xml 格式的解析方式有两种 1.SAX解析: ...

  8. GO介绍,环境的配置和安装 简单使用

    1. 介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gol ...

  9. 10个相见恨晚的 Java 在线练手项目

    10个有意思的Java练手项目: 1.Java 开发简单的计算器 难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习 2.制作一个自己的 Java 编辑器 难度中等,适合 Ja ...

  10. iOS后台唤醒实战:微信收款到账语音提醒技术总结

    1.前言 微信为了解决小商户老板们在频繁交易中不方便核对.确认到账的功能痛点,产品MM提出了新版本需要支持收款到账语音提醒功能.本文借此总结了iOS平台上的APP后台唤醒和语音合成.播放等一系列技术开 ...