黑马程序员技术交流社区

标题: 这个程序没有调用任何方法但是有结果,求大神解释原因 [打印本页]

作者: 康佳兴    时间: 2014-6-14 22:15
标题: 这个程序没有调用任何方法但是有结果,求大神解释原因
本帖最后由 康佳兴 于 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


作者: agelessman    时间: 2014-6-14 22:45
重写了方法啊

作者: 康佳兴    时间: 2014-6-14 22:45
agelessman 发表于 2014-6-14 22:45
重写了方法啊

那个……能不能说详细一点?
作者: 康佳兴    时间: 2014-6-14 22:47
agelessman 发表于 2014-6-14 22:45
重写了方法啊

我记得是那块讲来着……但是找不到具体哪个地方了?
作者: siegee    时间: 2014-6-17 10:30
load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2