Rap*_*ael 5 objective-c c-preprocessor
有没有办法在预处理器中获取当前范围的类?
目前,我正在做的是以下内容:
我有一个宏:
#define DATA_SOURCE_DEF_CONSTR(CLASS) + (CLASS *)dataSource { \
CLASS *source = [[[CLASS alloc] init] autorelease]; \
return source; \
}
Run Code Online (Sandbox Code Playgroud)
然后我在许多类中使用该宏,如:
DATA_SOURCE_DEF_CONSTR(SpecialDataSource)
Run Code Online (Sandbox Code Playgroud)
我想要像:
#define DATA_SOURCE_DEF_CONSTR + (__CLASS__ *)dataSource { \
__CLASS__ *source = [[[__CLASS__ alloc] init] autorelease]; \
return source; \
}
Run Code Online (Sandbox Code Playgroud)
称之为:
@implementation ...
DATA_SOURCE_DEF_CONSTR
...
@end
Run Code Online (Sandbox Code Playgroud)
使用预处理器在Objective-C中可以实现吗?
我不明白你想要实现什么目标。为什么不直接向 NSObject 添加一个类别,例如:
@implementation NSObject (handyConstructor)
+ autoreleasedInstance { return [[[self class] alloc] init] autorelease]; }
@end
Run Code Online (Sandbox Code Playgroud)
是否有某种原因让您特别希望由预处理器来完成此操作?