我正在处理一个旧的 iPhone OS 2.x 项目,我想在为 3.x 设计时保持兼容性。
我正在使用 NSInvocation,是这样的代码
NSInvocation* invoc = [NSInvocation invocationWithMethodSignature:
[cell methodSignatureForSelector:
@selector(initWithStyle:reuseIdentifier:)]];
[invoc setTarget:cell];
[invoc setSelector:@selector(initWithStyle:reuseIdentifier:)];
int arg2 = UITableViewCellStyleDefault; //????
[invoc setArgument:&arg2 atIndex:2];
[invoc setArgument:&identificadorNormal atIndex:3];
[invoc invoke];
以 3.0 和 2.0 都喜欢的方式编写代码,每个代码都使用其正确的语法。
我用问号标记的行有问题。
那里的问题是我试图分配给 arg2,一个在 OS 2.0 中没有定义的常量。由于 NSInvocation 的一切都是间接地做一些事情以避免编译器错误,我如何以间接的方式将此常量设置为变量?某种performSelector“为变量赋值”......
那可能吗?谢谢你的帮助。