C18_OC08-load、initialize、description
来源:互联网 发布:商品期货讨论软件 编辑:程序博客网 时间:2024/06/14 14:27
/** 前文中的“类”,就是“类对象” 类对象的类型叫Class-类(看到这个单词,似乎有种Java的亲切感) 前文中的“对象”,就是“实例对象” 实例对象的类型叫类 程序启动时,会加载全部的类(原类)和分类(增强类),加载完毕会执行一次且仅一次各类的load 程序启动后,当第一次调用某个类(类对象)时,会执行一次且仅一次其initialize方法**/#import <Foundation/Foundation.h>@interface Persion : NSObject // + (void) load; // + (void) initialize; // +(NSString *)description; // - (NSString *)description;@end@implementation Persion // 父类的load方法优先调用,逐级调用全部类的load方法 + (void) load{ NSLog(@"Persion的load方法"); } // 只有用到了这个类,才调用这个类的initialize方法,并且先调用父类的 +(void) initialize{ NSLog(@"Persion的initialize方法"); }/* // 如同Java的toString方法,区别是Java是自动的。如果重写,会影响子类。如果需要,父子类都要重写 // 静态的toString,由Class-类对象调用 +(NSString *)description{ return @"这个类叫Persion"; // 默认打印 <类名:0xXXXXXX内存地址> } // 动态的toString,由实例对象调用 -(NSString *)description{ // 可以像Java一样把各个属性都打印出来 return [NSString stringWithFormat:@"对象类型Persion,属性无"]; // 默认打印 类名 } */@end@interface Student : Persion // + (void) load; // + (void) initialize;@end@implementation Student // 全部类的load方法都会被执行一次 + (void) load{ NSLog(@"Student的load方法"); } +(void) initialize{ NSLog(@"Student的initialize方法"); } -(NSString *)description{ return @"这是子类的动态description方法"; }@end@interface Student (CN) // + (void) load; // + (void) initialize;@end@implementation Student (CN) // 增强类的load方法在原类的load后调用 + (void) load{ NSLog(@"Student(CN)的load方法"); } // 增强类的initialize会覆盖原类的initialize + (void) initialize{ NSLog(@"Student(CN)的initialize方法"); }@endint main(){ /** 程序一执行,即加载各个类。调用每个类的load方法 **/ [Student alloc]; // 加载结束,开始使用。从这个类的父类开始调用initialize方法 /** NSLog打印对象时,会根据%@对应的是Class类对象还是实例对象匹配其静态或动态的description方法 **/ id p = [[Persion alloc] init]; NSLog(@"%@", p); // p是一个实例对象,调用其 - (NSString *) description 方法 NSLog(@"%@", [Persion class]); // [Persion class]返回Class,调用其 + (NSString *) description 方法 /** 执行子类的description方法前,先执行父类的description方法。如果父类的重写了,而子类的没有重写,调用子类的方法结果为父类方法的结果 **/ id s = [[Student alloc] init]; NSLog(@"%@", s); // 调用实例对象的description方法 NSLog(@"%@", [s class]); // 调用类对象的description方法 return 0;}
- end
0 0
- C18_OC08-load、initialize、description
- 黑马程序员--ios中load initialize description
- load Initialize
- +load +initialize
- load initialize
- load initialize
- ObjectC语言基础5—分类load、initialize、description、SEL、三特性
- [IOS] initialize VS load
- NSObject +load and +initialize
- iOS - + initialize 与 +load
- load和initialize方法
- initialize和Load方法
- iOS - + initialize 与 +load
- load和initialize使用指南
- +load和+initialize
- iOS - + initialize 与 +load
- +initialize 与 +load
- + load和+ initialize
- tomcat设置用户名密码访问manager的方法
- android:descendantFocusability用法简析
- 获取目录下的所有文件名
- zoj3781 Paint the Grid Reloaded --- 缩点 bfs
- IOS 列表删除数据,添加数据,列表排序实现
- C18_OC08-load、initialize、description
- strcpy_s不接受两个参数 String的实现
- ASPNET中不定级动态菜单的实现
- cms的烦恼(快速幂取模)
- 开源语音工具箱
- Scrapy入门教程
- C19_OC09-方法的类型SEL
- WEB打印的几种方案
- PHP模板学习--Smarty 字符串 变量修饰器