zoukankan      html  css  js  c++  java
  • oc58--Category注意事项

    //
    //  main.m
    //  Category注意事项
    
    #import <Foundation/Foundation.h>
    #import "Person+NJ.h"
    
    int main(int argc, const char * argv[]) {
    
        Person *p = [Person new];
    //    p.height = 1.75;
        [p say];
        
        return 0;
    }
    //
    //  Person.h
    
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        double _weight;
    }
    
    @property (nonatomic, assign) int age;
    
    - (void)say;
    @end
    //
    //  Person.m
    
    
    #import "Person.h"
    
    @implementation Person
    
    -(void)say
    {
        NSLog(@"age = %i", _age);
    }
    @end
    //
    //  Person+MJ.h
    
    #import "Person.h"
    
    @interface Person (MJ)
    @end
    //
    //  Person+MJ.m
    
    #import "Person+MJ.h"
    
    @implementation Person (MJ)
    
    // 5.如果多个分类中都有和原有类中同名的方法, 那么调用该方法的时候执行谁由编译器决定,会执行最后一个参与编译的分类中的方法
    -(void)say
    {
        NSLog(@"%s", __func__);
    }
    @end
    //  Person+NJ.h
    
    #import "Person.h"
    
    // 1.分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)
    @interface Person (NJ)
    //{
    //    double _height;
    //}
    // 2.分类中的@property, 只会生成setter/getter方法的声明, 不会生成实现以及私有的成员变量,所以下面写的不会报错,但是也不能添加属性。
    //@property (nonatomic, assign) double height;
    
    
    - (void) hello;
    
    /*
     方法的调用顺序:
     1.分类
     2.本类
     3.父类
     */
    @end
    //  Person+NJ.m
    
    #import "Person+NJ.h"
    
    @implementation Person (NJ)
    
    - (void)hello
    {
        // 3.可以在分类中访问原有类中.h中的属性
        NSLog(@"hello %f", _weight);
    }
    
    // 4.注意: 如果分类中有和原有类同名的方法, 会调用分类中的方法,也就是说会忽略原有类的方法
    // 注意: 在开发中尽量不要这样写,原有的就废了。
    -(void)say
    {
        NSLog(@"%s", __func__);
    }
    @end
  • 相关阅读:
    [CTSC2017]吉夫特(Lucas定理,DP)
    [CTSC2017]游戏(Bayes定理,线段树)
    [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树)
    [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
    [BZOJ3786]星系探索(伪ETT)
    [CTSC2017]密钥
    PKUSC2018训练日程(4.18~5.30)
    [NOI2016]优秀的拆分
    [SDOI2008]Sandy的卡片
    [JSOI2007]字符加密
  • 原文地址:https://www.cnblogs.com/yaowen/p/7436161.html
Copyright © 2011-2022 走看看