A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 康佳兴 于 2014-6-17 14:15 编辑

#import <Foundation/Foundation.h>
@interface Person : NSObject
@end

@interface Student : Person
@end

@interface GoodStudent : Student
@end

int main()
{
    Student *s = [[Student alloc] init];
    return 0;
}

@implementation Student
+ (void)load
{
    NSLog(@"Student+load");
}
+ (void)initialize
{
    NSLog(@"Student+initialize");
}
@end

@implementation GoodStudent(MJ)
+ (void)load
{
    NSLog(@"GoodStudent-MJ+load");
}
+ (void)initialize
{
    NSLog(@"GoodStudent-MJ+initialize");
}
@end

@implementation GoodStudent
+ (void)load
{
    NSLog(@"GoodStudent+load");
}
+ (void)initialize
{
    NSLog(@"GoodStudent+initialize");
}
@end

@implementation Person
+ (void)load
{
    NSLog(@"Person+load");
}
+ (void)initialize
{
    NSLog(@"Person+initialize");
}
@end

4 个回复

倒序浏览
重写了方法啊
回复 使用道具 举报

那个……能不能说详细一点?
回复 使用道具 举报

我记得是那块讲来着……但是找不到具体哪个地方了?
回复 使用道具 举报
load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马