菜鸟教程小白 发表于 2022-12-12 10:49:08

ios - 调用[super dealloc]和调用父类(super class)的方法实现的区别


                                            <p><p>调用 <code></code> 和从父类(super class)获取 IMP 并调用它有什么区别?</p>

<pre><code>Method deallocMethod = class_getInstanceMethod(, @selector(dealloc));
IMP superImp = method_getImplementation(deallocMethod);
((void (*)(id, SEL))superImp)(self, _cmd);
</code></pre>

<p>根据我使用的内容,我会得到两种不同的行为。我在 UIViewController 的动态子类中看到了这种不同的行为。</p>

<p><strong>编辑</strong>:</p>

<p>详细说明。我没有使用 ARC。</p>

<p>行为上的差异也很难描述,但我会尽力而为。似乎 UIViewController 在 dealloc 中所做的一些清理工作尚未完成。如果我只调用 我会收到一条消息发送到 ViewController 的已释放实例。当它在 UIViewController (+) 的静态函数中为 View (我不完全理解的内部内容)增长 ViewController 的哈希时,就会发生这种情况。我的猜测是,在我只调用 <code></code>.</p> 的情况下, ViewController 不会从哈希中删除</p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不会在 ARC 中调用 。否则两者相同。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 调用和调用父类(super class)的方法实现的区别,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16406983/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16406983/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 调用[super dealloc]和调用父类(super class)的方法实现的区别