i n i t i a l i z a t i o n 和 f i n a l i z a t i o n 目的在于每个类在运行的时候就进行初始化在程序结束时执行finalization,但这与OC有点点不同的就在于,DELPHI的不是类函数class function(C++的说法,静态成员函数,类方法),OC的表现为类方法(+)。
-
@implementation SuperA
-
-
+ ( void ) initialize {
-
NSLog (@ "SuperA initialize" );
-
}
-
-
- ( void ) init {
-
NSLog (@ "SuperA init" );
-
}
-
@end
-
SuperA * sA1 = [ [ SuperA alloc ] init ];
-
SuperA * sA2 = [ [ SuperA alloc ] init ];
-
SuperA * sA3 = [ [ SuperA alloc ] init ];
2013-11-04 11:03:25.871 initialize_demo[40378:9b] SuperA initialize
2013-11-04 11:03:25.872 initialize_demo[40378:9b] SuperA init
2013-11-04 11:03:25.873 initialize_demo[40378:9b] SuperA init
2013-11-04 11:03:25.873 initialize_demo[40378:9b] SuperA init
-
+ ( void ) initialize {
-
NSLog (@ "initialize class:%@", [ self class ] );
-
}
-
@interface SubA : SuperA
-
-
@end
-
SuperA * sA1 = [ [ SuperA alloc ] init ];
-
SuperA * sA2 = [ [ SuperA alloc ] init ];
-
SuperA * sA3 = [ [ SuperA alloc ] init ];
-
-
SubA * sb = [ [SubA alloc ] init ];
2013-11-04 11:12:36.431 initialize_demo[40108:9b] initialize class:SuperA
2013-11-04 11:12:36.431 initialize_demo[40108:9b] SuperA init
2013-11-04 11:12:36.431 initialize_demo[40108:9b] SuperA init
2013-11-04 11:12:36.431 initialize_demo[40108:9b] SuperA init
2013-11-04 11:12:36.431 initialize_demo[40108:9b] initialize class:SubA
2013-11-04 11:12:36.431 initialize_demo[40108:9b] SubA init
SubA* sb = [[SubA alloc] init];
SuperA* sA1 = [[SuperA alloc] init];
SuperA* sA2 = [[SuperA alloc] init];
SuperA* sA3 = [[SuperA alloc] init];
同样的你也分别把父类,子类的 initalize进行注释了运行,你就会发现,initalize 父类与子类没有毛钱关系,只与对象实例有关系。也就是说每个类如果有initalize则会被CALL, 如果没有这个方法也不会在实化时调用父类。这点跟DELPHI还是很像的,只不过DELPHI是写成了全局的,跟类没有关系。