gpt4 book ai didi

objective-c - ARC cast - 破解 objc 对象内存

转载 作者:行者123 更新时间:2023-12-02 22:22:39 29 4
gpt4 key购买 nike

这段代码用于在非 ARC 中编译良好:

int *privateObjMemory = (int *)[myObject performSelector:@selector(privateMethod)];

现在我在 ARC 我得到:

Cast of an Objective-C pointer to 'int *' is disallowed with ARC

我该如何解决这个问题? :)

最佳答案

写成:

int* privateObjMemory = [myObject privateMethod];

;)

您想避免这种情况的原因是它对 ARC 不明确。 performSelector: 返回一个对象——是否应该保留 int*?嗯……不。

更新

基于评论,并删除之前的写作:

但这不是一个很好的解决方案。如果您正在调用特定的私有(private) API,那么您必须知道它的签名(例如参数和返回类型)。如果它是您的私有(private) API,那么想办法让私有(private)接口(interface)有选择地可见。

如果是别人的私有(private)API,那么就在参数和返回类型正确的类型上声明一个类。

然后正确声明选择器,编译器将能够通过直接向对象发送消息来正确设置调用——无需使用 performSelector:

关于objective-c - ARC cast - 破解 objc 对象内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13470621/

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