class_self-2.m

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· M 代码 · 共 72 行

M
72
字号
/* Contributed by Nicola Pero - Fri Oct 26 22:39:32 BST 2001 */#include <objc/objc.h>/* Test calling a class method on self where self has been redefined   to be another class - the call requires a cast *//* The first class */struct d{  int a;};@interface ClassA{  Class isa;}+ (Class) class;+ (struct d) method;@end@implementation ClassA+ (Class) class{  return self;}+ (struct d) method{  struct d u;  u.a = 5;    return u;}#ifdef __NEXT_RUNTIME__                                   + initialize { return self; }#endif@end/* The second class */@interface TestClass{  Class isa;}+ (void) test;@end@implementation TestClass+ (void) test{  self = [ClassA class];    if ([(Class)self method].a != 5)    {      abort ();    }}#ifdef __NEXT_RUNTIME__                                   + initialize { return self; }#endif@endint main (void){  [TestClass test];  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?