OC与C语言的一些区别

    - Foundation.h

   1)我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件

   2)工具箱的地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks

   3)规律: 所有的主头文件的名称都和工具箱的名称一致

             所有的主头文件都是导入了该工具箱中所有工具的头文件

    

    - importinclude

   1import的功能和include一样, 是将右边的文件拷贝到当前import的位置

       为了降低程序员的负担, 防止重复导入, 避免程序员去书写头文件卫士, OC给出来一个新的预处理指令import

   2import优点: 会自动防止重复拷贝

   3)因为OC完全兼容C, 所以可以在OC程序中编写C语言代码

       并且可以将C语言的源文件和OC的源文件组合在一起生成可执行文件


    - printfNSLog的区别

   1NSLog会自动换行

   2NSLog在输出内容时会附加一些系统信息

   3NSLogprintf接收的参数不一样


    - 函数与方法

   C语言函数:

void about(); //声明
   void about()  //实现
   {
       printf("model = cpu = size = color");
   }

   OC方法:

- (void)about;           //声明
   @implementation IPhone   //实现
   - (void)about
   {
       NSLog(@"打印本机信息");
   }
   @end

   1C语言中函数分为声明和实现

       OC中定义一个类也分为声明和实现, 也就是说以后我们在OC中定义类, 就是在写类的声明和实现

   2OC中的行为和C语言中的函数一样, 都是用来保存一段特定功能的代码

       C语言中定义一个函数, 分为声明和实现, 声明写在.h, 实现写在.c

       OC中定义一个方法, 也分为声明和实现, 声明写在@interface, 实现写在@implementation

   3C语言的函数分为两种: 内部函数和外部函数

       OC中的方法也分为两种; 类方法和对象方法

   4)类方法只能用类名调用, 对象方法只能用对象调用

     OC中的类方法用+表示, OC中的对象方法用-表示

   5)编写C语言函数的规律: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型

       编写OC方法也有规律, 规律和C语言一模一样

   6)注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;

       为什么OC中没有形参不需要写()

       因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的

   7)方法和函数的声明

       C语言函数

       int signal(int number);

       OC语言方法:

       - (int)signal:(int)number;

       注意: OC中的方法如果有参数, 那么每个参数的数据类型前面必须加上一个:

       注意: 当前这个有参数的方法它的方法名称是  signal:

            冒号也是方法名称的一部分 

       有返回值并且有多个参数的:

       C语言函数:

       int sendMessage(int number, char *content);

       OC语言方法:

       (int)sendMessage:(int)number :(char *)content;

       注意: 上面这个方法的方法名称是sendMessage::

   81 函数属于整个文件, 方法属于某一个类

        方法如果离开类就不行

       2 函数可以直接调用, 方法必须用对象或者类来调用

       注意: 虽然函数属于整个文件, 但是如果把函数写在类的声明中会不识别

       3 不能把函数当做方法来调用, 也不能把方法当做函数来调用

   9)方法的注意点:

       1 方法可以没有声明只有实现

       2 方法可以只有声明没有实现, 编译不会报错, 但是运行会报错

       3 如果方法只有声明没有实现, 那么运行时会报

         reason: '+[Person demo]: unrecognized selector sent to class 0x100001140'

         //发送了一个不能识别的消息, Person类中没有+开头的demo方法

         reason: '-[Person test]: unrecognized selector sent to instance 0x100400000'




猜你喜欢

转载自blog.csdn.net/baidu_28787811/article/details/80299967