A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© S970028126 中级黑马   /  2015-6-29 20:40  /  2031 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.当程序启动的时候,就会加载项目中的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。先加载原始类,在加载分类,不管程序运行过程有没有用到这个类,都会调用
2.当第一次使用某个类时,就会调用当前类的+initialize方法
3.先加载父类,在加载子类(load 和 initialize方法)
作用:可以监听类的初始化过程,知道类什么时候被使用
       + (void) load
        {
                NSLog(@"调用了了load方法");
        }
        //当第一次使用这个类的时候,就会调用一次+initialize方法,也是先加载父类,在加载子类
        + (void)initialize
        {
                NSLog(@"调用了initialize方法");
        }
-description方法:
        使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出       
+description方法:
        使用+NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出

默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>
NSLog(@"%@",p);
1.会调用对象p的-description方法
2.会拿到-description方法的返回值(NSString *)显示到屏幕上
3.-description方法默认返回的是“类名+内存地址”

例如:NSLog(@"%@", p); // 没有重写description之前,会显示<Person 0x100109760>
可以通过重写description方法修改NSLog的默认输出:
                重写-description或者+description方法即可
例如:-(NSString *)description
        {
                //NSLog(@"%@",self);//这个代码会引发死循环
                return [NSString stringWithFormat:@"age = %d, name=%@", _age, _name];
        } //重写description方法使之按照固定格式输出,调用时,会将description方法的返回值(NSString*)显示到屏幕上
死循环陷阱:如果在-description方法中使用NSlog打印self


1 个回复

倒序浏览
加油好好学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马