菜鸟教程小白 发表于 2022-12-12 09:44:36

ios - 如何查看 Objective-C 协议(protocol)的内容?


                                            <p><p>如果我可以访问一个 Objective-C 协议(protocol)并试图弄清楚如何查看它的内部以查看它包含哪些方法,包括它们的签名等。</p>

<p>我尝试过 NSLog 并在调试器中以及在 Internet 上查看对象,但找不到任何方法。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在看到这个 SO 帖子的答案后,我检查了 objc/runtime.h 中的方法:<a href="https://stackoverflow.com/questions/330030/list-selectors-for-obj-c-object" rel="noreferrer noopener nofollow">List selectors for Objective-C object</a>并找到了一种 NSLog 协议(protocol)的方法签名的方法</p>

<pre class="lang-c prettyprint-override"><code>#import &lt;objc/runtime.h&gt;

Protocol *protocol = @protocol(UITableViewDelegate);

BOOL showRequiredMethods = NO;
BOOL showInstanceMethods = YES;

unsigned int methodCount = 0;
struct objc_method_description *methods = protocol_copyMethodDescriptionList(protocol, showrequiredMethods, showInstanceMethods, &amp;methodCount);

NSLog(@&#34;%d required instance methods found:&#34;, methodCount);

for (int i = 0; i &lt; methodCount; i++)
{
    struct objc_method_description methodDescription = methods;
    NSLog(@&#34;Method #%d: %@&#34;, i, NSStringFromSelector(methodDescription.name));
}

free(methods)
</code></pre>

<p>唯一需要注意的是,在 protocol_copyMethodDescriptionList 中,您需要指定是否需要必需的方法和非必需的方法,以及是否需要类方法和实例方法。因此,要涵盖所有四种情况,您需要调用 protocol_copyMethodDescriptionList 四次并打印每个列表的结果。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何查看 Objective-C协议(protocol)的内容?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33767285/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33767285/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何查看 Objective-C 协议(protocol)的内容?