菜鸟教程小白 发表于 2022-12-12 16:47:13

objective-c - 如何将值传递给@protocol


                                            <p><p>我正在尝试实现一个协议(protocol)。 </p>

<p>我查看了文档 <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html#//apple_ref/doc/uid/TP30001163-CH15-BAJJABHJ" rel="noreferrer noopener nofollow">here</a>虽然我认为我遗漏了一些东西,但我理解这些概念。</p>

<p>我正在尝试创建一个 View ,用户点击 TableView 中的文件名会触发“didSelectRowAtIndexPath”,这将反过来通知委托(delegate)用户已选择文件(在委托(delegate)中触发 didSelectFileName)并传递文件名。我已将协议(protocol)声明如下;</p>

<pre><code>@protocol FileList &lt;NSObject&gt;
- (void)didSelectFileName:(NSString *)fileName;   
@end
</code></pre>

<p>我的问题是:</p>

<ul>
<li>如何设置 'fileName' 值,以便在调用 'didSelectFileName' 时包含当前值</li>
<li>如何告诉我的代码在委托(delegate)中触发“didSelectFileName”。</li>
</ul></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不能只向协议(protocol)发送消息(也不能设置值)。您将消息发送到符合协议(protocol)的类。</p>

<hr/>

<p>当您说一个类符合协议(protocol)时(<code>@interface MyClass : NSObject <MyProtocol> { etc</code>),您可以使用符合协议(protocol)。</p>

<p>因此,如果我们以您的协议(protocol)为例,我们可以拥有一个可以向委托(delegate)发送消息的类:</p>

<pre><code>@interface MyClass : NSObject {
id&lt;FileList&gt; _delegate;
}

@end

@implementation MyClass

- someMethod {
NSString *fn = @&#34;Hello.&#34;;
;
}

@end
</code></pre>

<p>只需确保在您的委托(delegate)中实现协议(protocol)中的方法即可。</p>

<p>您无需在委托(delegate)类的接口(interface)中重新定义方法。</p>

<hr/>

<p>这里有一些关于协议(protocol)的好读物:</p>

<ul>
<li> <a href="http://www.otierney.net/objective-c.html#protocols" rel="noreferrer noopener nofollow">http://www.otierney.net/objective-c.html#protocols</a> </li>
<li> <a href="http://mauvilasoftware.com/iphone_software_development/2008/05/a-brief-intro-to-objective-c-p.html" rel="noreferrer noopener nofollow">http://mauvilasoftware.com/iphone_software_development/2008/05/a-brief-intro-to-objective-c-p.html</a> </li>
<li> <a href="https://stackoverflow.com/questions/360992/protocol-versus-category" rel="noreferrer noopener nofollow">Protocol versus Category</a> </li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 如何将值传递给@protocol,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6762023/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6762023/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 如何将值传递给@protocol