此类代码(可能)是否违反了iPhone开发人员许可协议?
Class clazz = NSClassFromString(@"WNEntity");
id entity = [clazz entityWithImage:@"Icon.png"];
SEL setPositionSelector = NSSelectorFromString(@"setPosition:");
objc_msgSend(entity, setPositionSelector, CGPointMake(200, 100));
我正在研究从XML动态分配类并通过objc_msgSend调用它们的方法的代码。以这种方式构建我的对象非常方便,但它让我担心,因为我不知道这是否正常,或者通过动态执行代码甚至可能调用私有(?)API函数来违反许可证。如果他们是私人的,他们就不会被记录下来,对吗?
有人可以对此有所了解吗?您是否使用与上述类似的代码批准或拒绝了应用程序?
我很确定这没关系,但我不想听别人说的! :)
答案 0 :(得分:1)
如果您记录的方法已记录在案,则表示您没有违反协议。使用objc_msgSend()没有任何问题,因为这些“反射”函数已完全记录。
答案 1 :(得分:1)
您需要使用类似的结构才能支持不同版本的iOS(或适用于iPhone和iPad的“通用”应用程序),所以应该没问题。
但有一点:我不确定您是否需要直接使用objc_msgSend
。您是否可以使用performSelector:withObject:afterDelay:
或NSObject
的其他类似方法之一?