黑马程序员——IOS基础——OC面向对象七类的深入
2014-04-03 16:40
295 查看
------- android培训、java培训、期待与您交流!
类名就是类对象,类对象就是类名
父类:Person
子类:Strudent
分类:Person(MJ)
1.获取类对象:
>Class c=[Person class];//类方法
>Person *p=[Person new];
Class c2=[p class];//对象方法
2.类对象调用类方法:
Class c=[Person class];
Person *p =[c new];
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。
2.当第一次使用某个类,就会调用当前类的+initialize方法
3.先加载父类,再加载子类(+load方法),分类的load是在原来类之后加载
先初始化父类,再初始化子类(+initialize方法)
[[Student alloc] init];
加载顺序:
Person--load
Student--load
Person(MJ)--load
Person--initialize //先初始化父类
Student-initialize
由此,我们可以在类第一本加载的时候重写+initialize方法,可以进行监听
-description/+description方法:NSObject的方法
-(NSString *) description:决定实例对象的输出结果
+(NSString *) description:决定了类对象的输出结果
NSLog的补充:
苹果文档Language & Utilities--> Object-c下
------- android培训、java培训、期待与您交流!
类名就是类对象,类对象就是类名
父类:Person
子类:Strudent
分类:Person(MJ)
1.获取类对象:
>Class c=[Person class];//类方法
>Person *p=[Person new];
Class c2=[p class];//对象方法
2.类对象调用类方法:
Class c=[Person class];
Person *p =[c new];
1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。
2.当第一次使用某个类,就会调用当前类的+initialize方法
3.先加载父类,再加载子类(+load方法),分类的load是在原来类之后加载
先初始化父类,再初始化子类(+initialize方法)
[[Student alloc] init];
加载顺序:
Person--load
Student--load
Person(MJ)--load
Person--initialize //先初始化父类
Student-initialize
由此,我们可以在类第一本加载的时候重写+initialize方法,可以进行监听
-description/+description方法:NSObject的方法
-(NSString *) description:决定实例对象的输出结果
NSLog(@"%@",p);//<Person: 0x100109e50>打印出Person对象p的所有属性值。%@:打印出对象 //默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址> //1.输出的时候会调用p的-description方法,默认会返回字符串(NSString *)数据显示到屏幕上 //2.在NSObject子类Person中重写 - (NSString *)description { return [NSString stringwithFormat:@"age=@d, name=%@",_age,_name]; } //再次调用NSLog(@"%@",p);打印:age=20,name=jack Person *p2=[[Person alloc] init]; p2.age=25; p2.name=@"Mike"; NSLog(@"%@",p2);//打印出 age=25, name=Mike
+(NSString *) description:决定了类对象的输出结果
Class c = [Person class]; //1.会调用类的+description方法 //2.返回(NSString *)显示到屏幕上 NSLog(@"%@",c);//返回 : Person
NSLog的补充:
苹果文档Language & Utilities--> Object-c下
init main() { NSLog(@"%d",__LINE__); //输出行号 //NSLog输出C语言字符串的时候,不能有中文 //NSLog(@"%s",__FILE__); //输出文件路径 printf("%s\n",__FILE__); //输出:Users/apple/...../main.m NSLog(@"%s\n",__func__); //输出当前函数名:main Person *p = [[Person alloc] init]; //指针变量的地址 NSLog(@"%p",&p); //指针变量的地址 NSLog(@"%p",p); //对象p的地址 NSLog(@"%@",p); //<类名:对象地址> }
------- android培训、java培训、期待与您交流!
相关文章推荐
- 黑马程序员——IOS基础——OC面向对象六SEL
- 黑马程序员_ios基础总结8_OC面向对象
- 黑马程序员——IOS基础——OC面向对象四开发技巧
- 黑马程序员--ios基础--oc--面向对象--核心语法
- 黑马程序员——ios开发基础之OC中的面向对象以及对象特性
- 黑马程序员——OC基础---面向对象(思想,类,对象,三大特性)
- 黑马程序员————IOS学习笔记 第2篇 OC面向对象(二)
- 黑马程序员IOS-OC语言-面向对象
- 黑马程序员——OC基础——面向对象的三大特性(三)
- 黑马程序员--IOS基础第十八天(OC)
- 黑马程序员---IOS基础---OC 中对象和方法
- 黑马程序员-IOS-OC基础-内存管理
- iOS面向对象的建模:MVC(OC基础)
- 黑马程序员---iOS基础---OC中类创建对象
- 黑马程序员-IOS-OC基础-Block和协议
- 黑马程序员——Java基础---深入理解面向对象(封装继承和多态)
- 黑马程序员 OC基础: 面向对象_封装(二)
- 黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型
- 黑马程序员-IOS-OC基础-面向对象语法二
- 黑马程序员-IOS-OC基础-内存管理