我只想在花费更多时间之前得到一个明确的答案:我正在编写预处理器宏来简化综合Objective-C属性。我见过的一个想法是#define SYNTHESIZE(_X_) @synthesize _X_ = _##_X_
,它将属性绑定到具有下划线前缀的类似命名的实例变量。
在尝试进一步解决这个问题时,我的问题是,我是否可以使用属性名称调用@synthesize,但间接获取此属性名称?例如,如果我通过类进行一些类内省来查找所有属性的名称,是否可以将其中一个传递给@synthesize,或者它是否必须是实际名称本身?如果它有用,我正在使用LLVM 2.0进行编译。
答案 0 :(得分:2)
不,你不能在运行时合成。这就是你要求的 - 运行时代码,它可以内省属性并生成getter / setter。但是@synthesize是一个编译时功能,并且必须在编译时出现在代码中才能工作。