美文网首页
Vicki753's-基础知识-C与Objective-

Vicki753's-基础知识-C与Objective-

作者: vicki753 | 来源:发表于2017-12-17 15:03 被阅读11次

    C语言是一个面向过程的语言,Objective-C是一个面向对象的语言,也就是我们在Objective-C中我们有了类的概念。
    一、两者比较突出的特性:
    C语言的指针、OC语言的运行时、消息制
    C语言中最经典的是它的指针概念,这一特性也让Objective-C 的内部类型体现出来了:
    在Objective-C中我们没有“函数”之说,我们叫方法(Method)和发送信息(send message),因为Objective-C的方法是一种消息制,这也是因为它是运行时语言的特性之一,它的SEL就像一个符号,在c语言中我们的函数都是有函数指针指向的,但Objective-C是在类的实例对象中查找方法符号表,再找到对应的位置,这时的方法名似乎也不叫做函数指针的,因为保存的不是地址。这个得继续细细研究。-_-

    二、两者的语言特性上
    Objective-C其实是兼容C语言的,C的一些类型,Objective-C也有,我们知道 foundation框架是OS的基础框架,有数据类型、集合、操作系统功能的服务层。
    UIKit虽然看起来是只是很多界面啥的,实际上是provides most of the objects in the controller and view layers of your app, 所以,也就是很多关于界面上的组成数据类型/相关类都有,至少我的经验就是CGFloat在import <Foundation/foundation.h>时是错误的,但是导入了UIKit之后就可以,因为看文档也可以知道,Foundation感觉就是再次封装了一层,当然CGFloat可以用NSNumber来进行对象表示,但是并不是很直观对不,所以我们通常还是会用到CGfloat这些基础类型的,我们来了解一下C语言和OC语言的类型吧!

    Objective-C的数据类型有
    基础数据类型: 数值型【整型类型、浮点型】、 字符型【char】 、布尔型【Bool(字面常量值是YES或者NO)(注意BOOL和bool))的区别】,空类型【void】
    Block 类型
    指针类型 :类【class】 、 类型【id(id 也能在c语言中声明)】
    特殊类型 :【SEL】 【nil】

    C的数据类型:
    C语言的数值数据类型:(当然unsigned 和 signed 会对它们造成长度的影响)
    整型: 【short、 int、 long、long long】、 字符型【char 】 浮点型 【float、 double、long double】
    宽字符类型(很少用到)【wchar_t】 、 枚举 【enum】 、 布尔变量(_Bool) 【bool (非零就是true)】、
    复数类型(基本很少用到了)【a+bi】

    三、关键字的不同
    C语言的关键字:
    auto、double \ int \ struct \ break \ else \ long \ switch\ case \ enum \ register \ typedef \ char \ extern \ return \union \ const\ float \ short \ unsigned \ continue \ for \ signed \ void\ default \ goto \ sizeof \ volatile \ do \ if \ while \ static \ NULL

    Objective-C 关键字:
    @interface \ @implementation \ @end\ @public \ @protected \ @private \ @selector \ @try \ @catch \ @throw\ @finally\ @protocol @optional\ @required\ @class\ @property\ @synthesize \ @dynamic \ BOOL \ Class \ SEL \ YES \ NO \ id \ self\ super\ nil \ atomic\ nonatomic\ retain \ assign \ copy \ block\ weak \ strong\unsafe_unretained\readOnly\readWrite
    C语言的关键字都可以在Objective-C源程序中使用

    四、 导入文件的关键字不同

    C语言是 :

    include

    Objective-C 是:

    import

    这两者的区别一直都有介绍哈:
    可以说import 是include_once 的变体,就是不会重复导入,

    五、 for循环
    Objective-C增加了一个快速遍历的特性,这一特性真的很方便
    for ( id Object in Objects ){
    // object can do something
    }

    六、打印
    C 语言:printf("")
    Objective-C NSLog("")
    这两个的对比,就是NSLog有换行结束符\n,printf没有换行结束符

    这里暂时打住2017/12/17 15:02 PM

    参考博客:https://www.cnblogs.com/yyyyyyyyqs/p/4614892.html

    相关文章

      网友评论

          本文标题:Vicki753's-基础知识-C与Objective-

          本文链接:https://www.haomeiwen.com/subject/jdvswxtx.html