您的位置:首页 > 其它

类的深入研究

2017-07-13 10:35 169 查看
 1. 在Person.h里面添加两个方法声明+ (void)eat;
和 - (void)run;
    #import <Foundation/Foundation.h>
        
        @interface Person : NSObject
        + (void)eat;
        - (void)run;
        
        @end
    在Person.m里面实现方法
    #import "Person.h"
        
        @implementation Person
        + (void)eat{
            NSLog(@"好好吃饭");
        }
        - (void)run{
            NSLog(@"跑步锻炼�");
        }
        @end

   
    - (void)viewDidLoad {
        [super viewDidLoad];
    Person *p1 = [[Person alloc] init];
    //类的本质也是对象,是属于Class类的对象
    Class c1 = [p1 class];//调用对象方法得到类对象
    Class c2 = [Person class];//调用类方法得到类对象
    NSLog(@"\n c1 = %p \n c2 = %p",c1,c2);
    //打印结果如下:
    //    2017-07-13 09:59:25.136
类的深入研究[65419:799244]
    //    c1 = 0x100e21ec0
    //    c2 = 0x100e21ec0
    // 地址相同说明是等价的,是同一个类对象
    [c1 eat];//利用类对象调用类方法
    Person *p2 = [[c1 alloc] init];//利用类对象alloc创建对象
    [p2 run];//利用对象调用对象方法
    }

  2.  在Person.m里面添加方法
    当类加载进内存的时候调用,就是说没有创建这个类,只要这个类在工程里面就会加载调用
    +(void)load{
        NSLog(@"Person------load方法");
    }
    在代码里面第一次创建类的时候就会调用
    +(void)initialize{
        NSLog(@"Person------initialize方法");
    }
//    在这个里面啥也不写,直接运行,就会调用+(void)load;这个方法
//    打印结果如下:
//    2017-07-13 10:07:28.301 类的深入研究[65443:801957] Person------load方法
    Person *p1 = [[Person
alloc] init];
//这个时候只是写这一句代码,直接运行,就会调用+(void)load;和+(void)initialize方法
//打印结果如下:
//    2017-07-13 10:09:36.905 类的深入研究[65462:803189] Person------load方法
//    2017-07-13 10:09:36.953 类的深入研究[65462:803189] Person------initialize方法
//如果Student继承Person类的时候,这个时候在Student.m里面添加连个方法
//    +(void)load{
//        NSLog(@"Student------load方法");
//    }
//    +(void)initialize{
//        NSLog(@"Student------initialize方法");
//    }
    Student *s = [[Student
alloc] init];
    //打印结果如下:
//    2017-07-13 10:16:58.469 类的深入研究[65498:806112] Person------load方法
//    2017-07-13 10:16:58.470 类的深入研究[65498:806112] Student------load方法
//    2017-07-13 10:16:58.517 类的深入研究[65498:806112] Person------initialize方法
//    2017-07-13 10:16:58.517 类的深入研究[65498:806112] Student------initialize方法
    //小伙伴们明白了吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: