黑马程序员_OC学习之类的深入研究
来源:互联网 发布:d在c语言中是什么意思 编辑:程序博客网 时间:2024/06/11 15:38
前言:OC中类其实也是一个对象,这个对象为Class类型。当程序运行时,会先给类对象分配一块内存,程序会自动调用相关方法让我们监听动作。
一、+ (void)Load:当程序第一次运行时,会加载项目中所有的类,当类加载完毕后会调用+load方法。
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person+ (void)load { NSLog(@"Person Load");}@end@interface Student : Person@end@implementation Student+ (void)load { NSLog(@"Student Load");}@end@interface Person(J)@end@implementation Person (J)+ (void)load { NSLog(@"J Load");}@endint main() { //主函数没有调用Person方法但还是会调用类的load方法 return 0; }</span>
----------------------------------------------------------------------------------------------------------------------------------------------------------
二、+ (void) initialize:类对象的初始化方法,当第一次使用类时,会调用这个方法。
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person+ (void)initialize { NSLog(@"Person initialize");}@end@interface Student : Person@end@implementation Student+ (void)initialize { NSLog(@"Student initialize");}@end@interface Person(J)@end@implementation Person (J)+ (void)initialize { //会覆盖掉Person类本身的initialize方法 NSLog(@"J initialize");}@endint main() { Student *s = [[Student alloc] init]; //当使用到这个类时,会先加载父类initialize,再加载子类的该方法,如果该类的分类也重写了该方法,那么就不会调用本类的方法,而是该分类的方法 return 0; }</span>
注意:如果该类的分类也重写了initialize方法,那么就不会调用本类的方法,而加载该分类的方法。
----------------------------------------------------------------------------------------------------------------------------------------------------------
三、description
1、- (NSString *)description:对象方法。配合NSLog并重写该方法可以一次性输出对象的所有信息。
我们知道,NSLog中打印一个OC对象用%@。
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject@property(nonatomic,assign)int age;@property(nonatomic,retain)NSString *name;@end@implementation Person- (NSString *)description { return [NSString stringWithFormat:@"年龄=%d,姓名=%@",_age,_name]; //重新定义输出格式}@endint main() { Person *p = [[Person alloc]init]; p.age = 10; p.name = @"张三"; NSLog(@"%@",p); //一次性输出所有信息 return 0; }</span>
----------------------------------------------------------------------------------------------------------------------------------------------------------
2、+ (NSString *)description:对象方法,功能同上,区别在于打印输出类的信息
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject@property(nonatomic,assign)int age;@property(nonatomic,retain)NSString *name;@end@implementation Person+ (NSString *)description { return @"Person"; //打印输出类的信息}@endint main() { Class P = [Person class]; NSLog(@"%@",P); //根据重新方法输出相关信息 return 0; }</span>
注意:不要在description里面输出self,因为会无限调用,引发死循环。
- 黑马程序员_OC学习之类的深入研究
- 黑马程序员学习笔记_OC之类方法
- 黑马程序员_OC学习之类方法与对象方法
- 黑马程序员_OC之类和对象
- 黑马程序员_OC类的研究和内存管理初识
- 黑马程序员_OC关键字学习
- 黑马程序员_OC语言之类方法和关键字self
- 黑马程序员_OC面向对象之类和对象基础
- 黑马程序员-----OC学习之类的封装
- 黑马程序员_OC中的Foundation框架学习
- 黑马程序员_OC中的协议学习
- 黑马程序员_OC中的代码块学习
- 黑马程序员_OC学习之点语法
- 黑马程序员_OC学习之内存管理
- 黑马程序员_OC学习之block,protocol
- 黑马程序员学习笔记_OC之self
- 黑马程序员学习笔记_OC之继承
- 黑马程序员学习笔记_OC之多态
- Nucleus PLUS系统架构和组件
- 智慧生活
- Java 中使用POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写、单元格边框等
- 利用DHT网络原理制作bt采集蜘蛛,开源版
- 0地址的妙用(CVE-2009-2692)
- 黑马程序员_OC学习之类的深入研究
- THE DRUNK JAILER - POJ 1218 水题
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- 利用DHT网络原理制作bt采集蜘蛛,开源版
- 现在公开一个DHT网络爬虫网络爬虫供大家一起交流
- jsp生成和读取文件
- 【学习并改进】黑马程序员-张孝祥-交通灯管理系统业务
- 上拉电阻、下拉电阻的原理和作用
- 黑马程序员————java7K高薪——银行业务调试系统