gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:51:49 28 4
gpt4 key购买 nike

我正在尝试实现一个协议(protocol)。

我查看了文档 here我理解这些概念,尽管我认为我遗漏了一些东西。

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

@protocol FileList <NSObject>
- (void)didSelectFileName:(NSString *)fileName;
@end

我的问题是:

  • 如何设置“fileName”值,以便在调用“didSelectFileName”时它具有当前值
  • 如何告诉我的代码在委托(delegate)中触发“didSelectFileName”。

最佳答案

您不能只向协议(protocol)发送消息(也不能设置值)。您将消息发送到符合协议(protocol)的类。


当您说一个类符合协议(protocol) (@interface MyClass : NSObject <MyProtocol> { etc) 时,您可以使用符合协议(protocol)中方法的选择器安全地将任何消息发送到该类。

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

@interface MyClass : NSObject {
id<FileList> _delegate;
}

@end

@implementation MyClass

- someMethod {
NSString *fn = @"Hello.";
[_delegate didSelectFileName:fn];
}

@end

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

您不需要在委托(delegate)类的接口(interface)中重新定义方法。


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

关于objective-c - 如何将值传递给@protocol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6762023/

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