OC高效率52之精简initialize与load的实现代码

#import "ViewController.h"
#import "ClassA.h"
#import "BaseClass.h"
#import "SubClass.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    ClassA *a = [ClassA new];
//    BaseClass *class = [BaseClass new];
    SubClass *sub = [SubClass new];
    /**打印 initialize继承规则
      BaseClass initialize
      SubClass initialize
     *
     */
    
    //initialize 方法只应该用来设置内部数据,不应该在其中调用其他方法,几遍是本类自己的方法,也最好别调用
}
#import <Foundation/Foundation.h>

@interface ClassA : NSObject

@end

#import "ClassA.h"
#import "ClassB.h"

@implementation ClassA
//load 仅调用一次,并且不遵守继承规则,先OC中不需要使用它
+(void)load{
    NSLog(@"load ClassA");
    ClassB *b = [ClassB new];

}
@end
#import <Foundation/Foundation.h>

@interface ClassB : NSObject

@end

#import "ClassB.h"

@implementation ClassB

@end
#import <Foundation/Foundation.h>

@interface BaseClass : NSObject

@end
#import "BaseClass.h"
static const int kInterval = 10;
static NSMutableArray *array;
@implementation BaseClass
+(void)initialize{
    NSLog(@"%@ initialize",self);
    if (self == [BaseClass class]){
        array = [NSMutableArray array];//全局状态跟在编译器初始化
    }
}
@end

#import "BaseClass.h"

@interface SubClass : BaseClass

@end

#import "SubClass.h"

@implementation SubClass

@end





你可能感兴趣的:(OC高效率52之精简initialize与load的实现代码)