我希望得到类似的东西:
#define weaken(object) ...
----
ClassABCD * abcd = [ClassABCD new];
weaken(abcd);
weakAbcd.tag = 0;
----
我有以下代码:
#define weaken(x) __weak typeof(x) weak##x = x
但它只能使用" weakabcd"而不是" weakAbcd"。知道为什么,以及如何解决它?
答案 0 :(得分:0)
基于问题标题,NSClassFromString()将执行此操作。根据你提供的代码,我不太确定这两个匹配。
这是我的一个项目中的一行,我根据我在其他地方定义的字符串变量prefCellClassName创建了一个UITableViewCell子类实例。 (为了完整性,prefCellStyle和prefCellReuseIdentifier也是我在其他地方定义的变量。)
cell = [[NSClassFromString(prefCellClassName) alloc] initWithStyle:prefCellStyle reuseIdentifier:prefCellReuseIdentifier];
答案 1 :(得分:0)
从字符串创建一个类:
id someObject = NSClassFromString("MyClassName");
当您执行此类操作时,最好检查您的对象是否响应您尝试传递的方法,如下所示:
if ([someObject respondsToSelector:@selector(someMethod)])
{
[someObject someMethod];
}
这样的功能使objective-c成为动态语言