黑马程序员——类的本质
来源:互联网 发布:js怎么向div添加东西 编辑:程序博客网 时间:2024/05/21 07:52
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
今天看了下mj老师讲的内的本质
其中讲到了,类其实也是一个对象,也就是类对象,当然它的类型是class类型的
当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法。只会调用一次。
当第一次使用某个类时,就会调用当前类的+initialize方法
先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
这是m.h
#import <Foundation/Foundation.h>#import "Person.h"#import "Student.h"#import "GoodStudent.h"int main(){ return 0;}
这是一个Person类
#import <Foundation/Foundation.h>@interface Person : NSObject@property int age;+ (void)test;@end#import "Person.h"@implementation Person+ (void)test{ NSLog(@"调用了test方法");}// 当程序启动的时候,就会加载一次项目中所有的类。类加载完毕后就会调用+load方法+ (void)load{ NSLog(@"Person---load");}// 当第一次使用这个类的时候,就会调用一次+initialize方法+ (void)initialize{ NSLog(@"Person-initialize");}@end
在这个main函数运行的时候就会打印我们Person类中的load方法,尽管我们在main函数并没有创建这个类。
然后Mj老师又讲了一个很重要的知识点那就是description
description方法既是类方法也是对象方法。
要判断它目前是什么方法主要是看调用它的是类还是对象
我们可以通过重写description方法来实现打印完整的结果
默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>
1.会调用对象p的-description方法
2.拿到-description方法的返回值(NSString *)显示到屏幕上
3.-description方法默认返回的是“类名+内存地址”
下面是m.h
#import <Foundation/Foundation.h>#import "Person.h"void test9(){ // 输出当前函数名 NSLog(@"%s\n", __func__);}int main(){ Person *p = [[Person alloc] init]; // 指针变量的地址 NSLog(@"%p", &p); // 对象的地址 NSLog(@"%p", p); // <类名:对象地址> NSLog(@"%@", p); return 0;}
再下面是Person类
#import <Foundation/Foundation.h>@interface Person : NSObject@property int age;@property NSString *name;@end#import "Person.h"@implementation Person// 决定了实例对象的输出结果- (NSString *)description{ return [NSString stringWithFormat:@"age=%d, name=%@", _age, _name];}
所以在输出结果的时候可以直接打印age和name而不是一个一个的输入。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
0 0
- 黑马程序员——类的本质
- 黑马程序员——类的本质
- 黑马程序员---类的本质
- 黑马程序员--类的本质
- 黑马程序员-OC-类的本质
- 09.黑马程序员-分类、类的本质
- 黑马程序员---OC类的本质
- 黑马程序员---Objective-C 类的本质
- 黑马程序员——OC基础——分类和类的本质
- 黑马程序员——OC语言——分类和类的本质
- 黑马程序员——OC基础语法—类的本质和SEL类型
- 黑马程序员——8、OC语言(分类、类的本质)
- 黑马程序员—Objective-C基础_分类以及类的本质
- 黑马程序员_OC基础07_类的本质
- 黑马程序员-分类以及类的本质研究
- 黑马程序员--IOS_学习笔记_类的本质
- 黑马程序员一分类,类的本质,description,SEL
- 黑马程序员IOS-OC语言-类的本质、SEL
- windows核心编程(一) -----windows消息分流器
- 梳理springmvc
- String.Substring 方法 (Int32, Int32)
- 程序员加班到深夜,你经历过没?
- VMware虚拟机下Linux平台搭建samba服务器的基本配置
- 黑马程序员——类的本质
- 编译器级别的代码优化对比
- LeetCode-Wildcard Matching
- Zookeeper中节点属性中的 三个 Zxid
- 学生宿舍管理系统类图设计
- View---visibility属性VISIBLE、INVISIBLE、GONE的区别
- String.LastIndexOf 方法 (Char)
- Struts2 开发一个简单的Hello World
- 李开复:世界在变,你也要变