load-3.m
来自「用于进行gcc测试」· M 代码 · 共 109 行
M
109 行
/* load-3.m Author: Ovidiu Predescu <ovidiu@cup.hp.com> Date: June 3, 2001 Test if the +load methods are invoked, and are invoked in the proper order. */#include <objc/objc.h>#include <objc/Object.h>@interface A : Object@end@interface B : A@endstatic a_load = 0;static b_load = 0;static a_category_load = 0;static b_category_load = 0;@implementation A (Category)+ (void)load{ a_category_load = 1; printf("+[A(Category) load]\n"); if (a_load != 1) { printf("+load for A(Category) invoked before A's!\n"); abort(); }}@end@implementation B(Category)+ (void)load{ b_category_load = 1; printf("+[B(Category) load]\n"); if (b_load != 1) { printf ("+load for B(Category) invoked before B!\n"); abort(); }}@end@implementation B+ (void)load{ b_load = 1; printf("+[B load]\n"); if (a_load != 1) { printf("+load for B invoked before A's!\n"); abort(); } if (b_category_load != 0) { printf("+load for B invoked after B(Category)!\n"); abort(); }}@end@implementation A+ (void)load{ a_load = 1; printf("+[A load]\n"); if (a_category_load != 0) { printf("+load for A(Category) invoked before A!\n"); abort(); } if (b_load != 0) { printf("+load for A invoked after B!\n"); abort(); } if (b_category_load != 0) { printf("+load for B(Category) invoked before A and B!\n"); abort(); }}@endint main (void){ if (a_load + b_load + a_category_load + b_category_load != 4) { printf("Not all +load methods invoked!\n"); abort(); } return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?