Objective C预处理器:获取当前类

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中可以实现吗?

NSR*_*der 2

我不明白你想要实现什么目标。为什么不直接向 NSObject 添加一个类别,例如:

@implementation NSObject (handyConstructor)

+ autoreleasedInstance { return [[[self class] alloc] init] autorelease]; }

@end
Run Code Online (Sandbox Code Playgroud)

是否有某种原因让您特别希望由预处理器来完成此操作?