美文网首页八天学会OC
第01天OC语言(13):方法和函数的区别

第01天OC语言(13):方法和函数的区别

作者: liyuhong | 来源:发表于2017-07-20 14:08 被阅读10次
    一、概念
    
    /*
     函数 和 方法的 区别
      1.函数属于整个文件, 方法属于某一个类
        方法如果离开类 就不行
      2.函数可以直接调用
     注意 :  虽然函数属于整个文件,但是如果把函数 写在 类的声明中 会不识别
     方法的注意点 : 
        方法可以没有声明 只有实现
        方法可以只有声明没有实现,编译不会报错,但是运行会报错
         如果方法 只有声明 没有实现, 那么运行时会报错 :  reason: '+[Person demo]: unrecognized selector sent to class 0x100001140' ---class
        发送了一个不能识别的消息, 在Person类中 没有+开头的 demo方法
     reason: '-[Person test]: unrecognized selector sent to instance 0x100103560' ---instance
     
     类也有一个注意点 : 
     类 可以只有实现 没有声明
     注意 : 在开发中 不建议这样写
     */
    
    二、代码
    #import <Foundation/Foundation.h>
    #pragma mark 类
    
    //@interface Person : NSObject
    //// 对象方法声明
    //- (void)test;
    //// 类方法声明
    ////+ (void)demo;
    //
    //
    ///*
    //// 外部函数声明
    //extern void sum();
    //// 内部函数声明
    //static void minus();
    //// 外部函数
    //extern void sum()
    //{
    //    printf("sum");
    //}
    //// 内部函数
    //static void minus()
    //{
    //    printf("minus");
    //}
    // */
    //
    //@end
    
    @implementation Person :NSObject
    // 对象方法实现
    - (void)test
    {
        NSLog(@"test");
    }
    // 类方法实现
    + (void)demo
    {
        NSLog(@"demo");
    }
    
    @end
    
    #pragma mark 函数
    // 外部函数声明
    extern void sum();
    // 内部函数声明
    static void minus();
    // 外部函数
    extern void sum()
    {
        printf("sum");
    }
    // 内部函数
    static void minus()
    {
        printf("minus");
    }
    
    #pragma mark main函数
    int main(int argc, const char * argv[])
    {
    //    demo();
    //    [Person sum];
    //    [Person demo];
    //    [Person demo];
        Person *p = [Person new];
        [p test];
    
    
        return 0;
    }
    
    image.png image.png image.png image.png image.png image.png

    相关文章

      网友评论

        本文标题:第01天OC语言(13):方法和函数的区别

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