gpt4 book ai didi

objective-c - Obj-C 中哪个对象调用了另一个对象的方法

转载 作者:行者123 更新时间:2023-12-03 18:05:33 24 4
gpt4 key购买 nike

我希望在 Cocoa 中编写一个插件 Controller 来加载包,并公开一组特定的方法供插件调用。

我的问题是:是否有可能知道有关在 Controller 中调用方法的对象的(任何)信息。当实例化的插件调用我的插件 Controller 中的方法时,我想知道哪个插件实例调用了该方法,而不必依赖插件发送指向自身的指针作为参数(我总是可以验证它们发送的指针) ,但我希望 API 方法尽可能简单)。

可能没有完美的解决方案(并且有简单的解决方法),但如果可能的话学习一些新技巧(或为什么不可能的原因)总是好的。

提前致谢。

最佳答案

如果不遍历堆栈,这是不可能的,甚至可能也不可能。甚至不能保证给定的消息是从方法内发送的——即使是,它也可能不是您认为的“调用者”的方法。例如,假设您的插件可以访问 Cocoa,您的 Controller 方法可以由 NSTimer 调用。

一般来说,这是不切实际的。实现此目的的正常方法是让对象自行传递。如果您出于安全原因尝试这样做,无论如何您都会需要一个更强大的解决方案,因为 Cocoa 的对象模型在设计时并未考虑到这一点。物体很容易谎报它们是谁、是什么。

关于objective-c - Obj-C 中哪个对象调用了另一个对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2655761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com