oc基础第一天---c语言与oc语言对比

时间:2021-07-22 00:27:54

一 . 基础oc语法

  1. 源文件后缀名

     C程序的源文件的后缀名为.c

     OC程序的源文件的后缀名为.m   message. 消息机制.

 

     OC是完全兼容C语言的. 所以在.m文件之中是可以写任意的C代码的

     .m文件中. 可以写OC代码、C代码、C++代码.

 

  2. main函数仍然是OC程序的入口和出口.

     返回值代表程序的结束状态.

     参数可以接收用户的数据.

 

     也可以不带参数.

 

  3. #import指令.

     1). 这是1个预处理指令. 会在编译之前执行.

     2). 作用: 是#inlcude指令的增强版.

              在预编译的时候,将后面的文件的内容拷贝到写指令的地方.

 

     3). 增强: 同1个文件无论import多少次,都只会包含1次.

 

 

     4). 如果要使用#Inlcude指令!来实现这个效果的话 就会比较麻烦了.

         必须要配合#ifndef指令来实现.

 

     5). #import指令的原理: 在包含1个文件的时候. 底层会先判断这个文件是否被包含.

         如果被包含就会掠过  如果没有包含才会包含.

         不需要使用条件编译指令.

 

 

     6). import指令的用法

         #import "路径" 先找当前源文件所在的目录 没有再去Xcode编译器目录之中查找.

         #import <路径> 直接找Xcode编译器目录.

 

 

        如果是我们自己的文件.别乱放 是放在当前源文件所在的目录下.

 

        "" 包含自己的文件

        <> 包含系统的文件.

 

  

   4. 框架

      苹果或者第三方事先将一些牛X(常用)的功能写好. 把这些功能模块封装在1个1个类之中.

      把这些功能提供给大家用. 这些类的集合就叫做框架.

 

 

      框架说白了就是1个功能集合. 这些功能是苹果或者其他高手写的.我们要用直接调用就可以了.

 

 

      相当于C语言中的函数库.  Location.......

 

      Foundation框架: 

      

      提供了一些OC最基础的功能. 数据类型的支持、输入输出.....

 

 

 

      Foundation.h的地址:

     /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Foundation.framework/Headers

 

 

     Foundation.h这个文件中包含了所有的Foundation框架中的头文件.

     所以,我们只要包含这个头文件 就相当于将所有的Foundation框架中的头文件都包含了.

 

     所以,我们这么一写 就可以直接使用Foundation框架中的所有的东西了.

 

 

  5. @autoreleasepool 这是1个自动释放池

 

     1)  可以将代码直接写在池子之中.

     2)  也可以删除 目前为止不会有影响.

 

 

  6. NSLog函数.

     1). 是printf函数的增强版.

     2). 作用: 向控制台输出信息.

 

 

     3). 增强的地方.

         a. 自动换行,不需要去追加'\n' NSLog函数在输出完毕信息之后 会自动的换行.

         b. 在输出信息的同时 还会输出一些与程序有关的其他信息.

            -> 显示执行这句代码的时间 具体到毫秒.

            -> 显示这句代码是由那1个程序来执行的.

            -> 程序运行的时候的进程ID PID

            -> 线程ID。

            -> 最后面才是我们输出的信息.

 

        

     4).printf支持使用格式控制符.NSLog函数支持printf函数的全部的格式控制符 并且使用方法都是一样的.

 

 

     5).注意

        a. NSLog函数的字符串参数前面必须要加1个@符号.

        b. NSLog函数默认会在输出完毕信息之后换行.

           如果我们在字符串的后面手动的加了'\n' 这个时候NSLog函数的自动换行就会失效.

 

 

     6).从今以后, 忘记printf函数 使用NSLog函数.

 

 

 

  7. OC中的字符串.

     1). C语言的字符串的存储方式.

         a. 使用字符数组来存储

            char str[] = "jack";

 

 

         b. 使用字符指针来保存存储在常量区字符串的地址.

            char *str = "rose";

 

     

     2).OC中专门的设计了1个新的类型来保存字符串。对应我们而言无需关心内部是如何实现的.

 

        设计了1个NSString类型的指针变量. 用这个指针变量来保存字符串的地址.

 

        

        OC中的字符串常量必须加1个前缀@符号.

        @"jack"  @"rose"  @"北京我爱你" 是OC的字符串.

 

        "@jack" 这是C语言的字符串. OC的字符串常量的@符号是写在双引号外面的.

 

         "jack" "rose" "北京欧你还敢" 这是C语言的字符串.

 

 

        OC的字符串常量使用NSString类型的指针变量来保存地址.

 

 

     3). NSString类型的指针变量只能保存OC字符串。为其赋的字符串必须加前缀@符号.

         不能保存C语言的字符串.

 

 

     4). 使用%@格式控制符 输出 NSString 类型的字符串.

 

     5). NSLog函数的第1个参数是1个NSString类型的 所以字符串只能给1个OC字符串,不能给1个C语言字符串.

 

 

 8. NS前缀

 

    1). NextStep --> Cocoa   实际上是NeXT公司开发的.

       

 

        为了区分这些东西的前身是NextStep 就为他们家了1个前缀NS

 

 

 

 9. @符号.

 

    1). 将C语言的字符串转换为OC的字符串.

        "jack"

 

        @"jack"

 

    2). OC中新增的关键字绝多部分都是以@开头.

        @autoreleasepool

        @interface

        @implementation

        @public

        @protected

        .........

 

 

 10. 注释

     与C语言一模一样.

 

 

 11. 函数的定义与调用.

     与C语言一模一样.