如何在 Swift 或 Objective-C 中为私有 API 设置委托?

问题描述 投票:0回答:1

我可以在 Objective-C 中通过

getClassFromString:
performSelector:
调用私有 API 的方法,或者使用 Dynamic 库在 Swift 中轻松调用它们。但是,我无法为私有 API 设置委托,因为我无法动态获取协议并使类符合它。

我尝试复制协议的定义并使类符合它,然后在 Objective-C 中使用

[/*id*/ performSelector:NSSelectorFromString(@"setDelegate") withObject:[[MyDelegate alloc] init]];
。但好像没有什么效果

ios swift objective-c iphone-privateapi
1个回答
0
投票

Objective-C 并不真正关心设置为委托的对象是否实际上符合协议。如果没有,则会出现运行时崩溃,但只要您的类正确实现了协议方法,您就可以将其分配为委托。

您的代码最有可能发生的情况是声明了私有类的委托

weak
,并且由于没有其他东西保留它,因此它立即被释放。

如果您保留对

MyDelegate
的强引用,然后将其分配给私有类,它可能会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.