//
// main.m
// 类的启动过程 #import <Foundation/Foundation.h>
#import "Person.h"
#import "GoodStudent.h" /* 只要程序启动就会将所有类的代码加载到内存中, 放到代码区
load方法会在当前类被加载到内存的时候调用, 有且仅会调用一次
如果存在继承关系, 会先调用父类的load方法, 再调用子类的load方法*/ int main(int argc, const char * argv[]) {
/*2017-08-23 15:05:08.882568+0800 类的启动过程[36713:860727] Car类被加载到内存了
2017-08-23 15:05:16.019104+0800 类的启动过程[36713:860727] Person类被加载到内存了
2017-08-23 15:05:17.390692+0800 类的启动过程[36713:860727] Student类被加载到内存了
2017-08-23 15:05:19.161607+0800 类的启动过程[36713:860727] GoodStudent类被加载到内存了
还没有使用类的时候就加载到内存了。
*/ Person *p1 = [[Person alloc] init];
Person *p2 = [[Person alloc] init];
Person *p3 = [[Person alloc] init];
Person *p4 = [[Person alloc] init]; GoodStudent *gstu = [[GoodStudent alloc] init]; /*
2017-08-23 15:08:55.461633+0800 类的启动过程[36844:863122] Person initialize
2017-08-23 15:09:01.543395+0800 类的启动过程[36844:863122] Studnet initialize
2017-08-23 15:09:06.376914+0800 类的启动过程[36844:863122] GoodStudent initialize */
return ;
}
//
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject
@end
//
// Person.m #import "Person.h" @implementation Person
// 只要程序启动就会将所有类的代码加载到内存中, 放到代码区
// load方法会在当前类被加载到内存的时候调用, 有且仅会调用一次
// 如果存在继承关系, 会先调用父类的load方法, 再调用子类的load方法
+ (void)load
{
NSLog(@"Person类被加载到内存了");
} // 当当前类第一次被使用的时候就会调用(创建类对象的时候)
// initialize方法在整个程序的运行过程中只会被调用一次, 无论你使用多少次这个类都只会调用一次
// initialize用于对某一个类进行一次性的初始化
// initialize和load一样, 如果存在继承关系, 会先调用父类的initialize再调用子类的initialize
+ (void)initialize
{
NSLog(@"Person initialize");
} @end
//
// Student.h #import "Person.h" @interface Student : Person @end
//
// Student.m #import "Student.h" @implementation Student
+ (void)load
{
NSLog(@"Student类被加载到内存了");
}
+ (void)initialize
{
NSLog(@"Studnet initialize");
}
@end
//
// GoodStudent.h #import "Student.h" @interface GoodStudent : Student @end
//
// GoodStudent.m #import "GoodStudent.h" @implementation GoodStudent
+ (void)load
{
NSLog(@"GoodStudent类被加载到内存了");
}
+ (void)initialize
{
NSLog(@"GoodStudent initialize");
} @end
//
// Car.h #import <Foundation/Foundation.h> @interface Car : NSObject @end
//
// Car.m #import "Car.h" @implementation Car
+ (void)load
{
NSLog(@"Car类被加载到内存了");
}
+ (void)initialize
{
NSLog(@"Car initialize");
}
@end

最新文章

  1. .net MVC中异常日志
  2. [Xamarin] 使用Webview 來做APP (转帖)
  3. Deployment options
  4. 【2016-10-17】【坚持学习】【Day9】【反射】
  5. iOS进阶_地图上定位的标志——大头针
  6. ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项
  7. string类find函数返回值判定
  8. 有关g++编译调试的问题
  9. mysql 选择性高
  10. 如何在java类中读取Properties配置文件
  11. LINQ之路系列文章导读
  12. java中计算两个时间差
  13. App Extensions篇之Share Extension
  14. ubuntu16.04安装中文输入法
  15. vue实现pc端上拉加载功能,不兼容移动端
  16. Java Lambda expression
  17. JAVA发送HttpClient请求及接收请求结果
  18. The META for Mobile terminal
  19. cf里的一些简单组合数题
  20. SQL Server 2016新特性:Live Query Statistics

热门文章

  1. iOS CoreData 开发
  2. ASP.net参数传递总结
  3. ProE常用曲线方程:Python Matplotlib 版本代码(蝴蝶曲线)
  4. C# call Win32 api时,-1如何转换为DWORD
  5. js 图表转图片
  6. Linux之强大的selinux
  7. JavaScript学习笔记之对象
  8. (ccf)201703-3markdown
  9. 手机访问pc版网站自动跳转为手机版页面
  10. 【codeforces 510C】Fox And Names