lookup-1.m

来自「linux下编程用 编译软件」· M 代码 · 共 55 行

M
55
字号
/* { dg-do run { target *-*-darwin* } } */#include <objc/Object.h>#include <stdlib.h>typedef struct MyWidget {  int a;} MyWidget;MyWidget gWidget = { 17 };@protocol MyProto- (MyWidget *)widget;@end@interface Foo: Object@end@interface Bar: Foo <MyProto>@end@interface Container: Object+ (MyWidget *)elementForView:(Foo *)view;@end@implementation Foo@end@implementation Bar- (MyWidget *)widget {  return &gWidget;}@end@implementation Container+ (MyWidget *)elementForView:(Foo *)view{  MyWidget *widget = nil;  if ([view conformsTo:@protocol(MyProto)]) {    widget = [(Foo <MyProto> *)view widget];  }  return widget;}@endint main(void) {  id view = [Bar new];  MyWidget *w = [Container elementForView: view];  if (!w || w->a != 17)    abort ();  return 0;}

⌨️ 快捷键说明

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