从基类扩展委托

2023-11-26

我有一个 objc 基类:

@protocol BaseClassDelegate;

@interface BaseClass : NSObject

@property (nonatomic, weak) id <BaseClassDelegate> delegate;

@end

@protocol BaseClassDelegate <NSObject>

-(void)baseDelegateMethod;

@end

我正在创建一个快速子类,我想在其中扩展我的委托......

protocol SubClassDelegate : BaseClassDelegate {

    func additionalSubClassDelegateMethod();
}

class SubClass: BaseClass {

    @IBAction func onDoSomething(sender: AnyObject) {

        delegate?.additionalSubClassDelegateMethod();  <--- No such method in 'delegate'
    }
}

现在,当我创建子类时,我可以说它符合 SubClassDelegate 并设置委托。问题是(当然),这个子类中不存在“委托”。有没有办法告诉编译器将我的委托“扩展”到我的子类中? (或者我在这里疯了并且错过了一些明显的事情)


我要么创建一个包装委托以使其成为正确的类型SubClass.

class SubClass: BaseClass {
    var myDelegate: SubClassDelegate? {
        get { return delegate as? SubClassDelegate }
        set { delegate = newValue }
    }
    @IBAction func onDoSomething(sender: AnyObject) {
        myDelegate?.additionalSubClassDelegateMethod();
    }
}

或者简单地将委托强制转换为预期类型:

(delegate as? SubClassDelegate)?.additionalSubClassDelegateMethod();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从基类扩展委托 的相关文章

  • 新的 FUITableViewDataSource - 如何使用?雨燕3

    刚刚更新到较新的 FirebaseUI Pod 有些事情发生了变化 但其中最大的变化之一是 FUI 表视图的工作方式 我让它在旧版本上运行良好 但在下面遇到了困难 并且缺乏文档 示例 self dataSource FUITableView
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 如何在 RestKit 中为同一类提供两条发布路线

    由于我无法弄清楚如何为同一个类设置两个不同的 POST 资源路径 因此我尝试手动创建 RKObjectLoader 请求 但它似乎不断发送 GET 请求而不是 POST 即使我已将方法设置为邮政 这是我的代码 User user User
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 使用反射的属性类型或类

    我想知道是否可以确定对象属性的类或原始类型 获取所有属性名称和值非常容易 所以答案 https stackoverflow com questions 2299841 objective c introspection reflection
  • 从 Core Data、iOS 获取最后插入的项目

    有没有办法获取核心数据数据库中最后插入的项目 这将返回最后插入的对象 setFetchLimit 1 和 setFetchOffset 所有条目数 1
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • 在 Rails 中,我可以通过委托方法订购查询吗?

    我在通过委托方法订购查询时遇到困难 我的任务是帮助将一个相当大的 Rails 3 应用程序升级到 Rails 4 我在索引操作中遇到了这个查询 我知道这些对象的命名是可怕且令人困惑的 measurements controller rb d
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • Objective-c中的贝塞尔曲线算法

    比我聪明的人可以看一下这个吗 我正在尝试实现我发现的贝塞尔曲线算法here http webtweakers com swag GRAPHICS 0074 PAS html在 Objective c 中 输出是错误的 我想我正确地转换了代码
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • 如何将使用 enquo() 创建的动态变量名称传递给 dplyr 的 mutate 进行评估?

    我正在创建一个工作流程 其中包含相同的管道步骤 重命名 选择依据 然后使用我在管道之前提供的名称来更改所有内容 我已经成功使用enquo and bang bang 重命名为我想要的字符串 然后再次选择它 但是当我到达变异步骤时 它要么重复
  • 如何让 Valgrind 显示行错误?

    如何让 Valgrind 准确显示错误发生的位置 我编译了我的程序 通过 PuTTy 在 Linux 终端上的 Windows 机器上 添加了 g 调试选项 当我运行 Valgrind 时 我得到泄漏和堆摘要 并且我肯定丢失了内存 但我从未
  • 为什么 Perl open() 文档使用两种不同的 FILEHANDLE 样式?

    The open 函数的文档显示语法open as 打开文件句柄 EXPR 打开文件句柄 模式 表达式 打开文件句柄 模式 表达式 列表 打开文件句柄 模式 参考 打开文件句柄 在下面的示例中 有一些地方使用普通的 前缀变量作为文件句柄 o
  • 如何将 SQL 子查询转换为联接

    我有两个具有 1 n 关系的表 内容 和 版本内容数据 例如 文章实体和该文章创建的所有版本 我想创建一个显示每个 内容 的顶级版本的视图 我使用这个查询 带有一个简单的子查询 SELECT t1 id t1 title t1 conten
  • IE 的默认 CSS 值 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在开发一个 Web 应用程序 但它对 Firefox 不太友好 设计是在我加入公司之前 2 年完成的 我遇到了一些 CSS 问题 并且无法使用
  • 如何在 d3.js 中查找点是否在多边形内部

    我知道有手动方法可以做到这一点 请参阅多边形中的点 但是在 d3 js 中是否有一种本地方法可以确定一个点是否在多边形内部 Update 这现在是一部分d3 多边形 d3 polygonContains polygon point
  • 什么会在 C 中产生词法错误?

    除了不关闭评论之外 什么构成 C 中的词法错误 这里有一些 abc
  • 检查用户名可用性

    我有一个用户登录表单 我想在 user field 失去焦点之后立即检查数据库中是否有用户名 我可以使用 javascript 覆盖表单上的此事件 但无法从 javascipt 代码发送 Ruby AJAX 请求 有没有什么方法可以检查用户
  • 如何从数组动态创建 JavaScript 变量?

    假设我有一个变量名称数组 var varNames new Array name1 name2 name3 我如何创建var name1 var name2 and var name3只需循环遍历varNames array 这将创建全局变
  • 有什么命令可以让我了解 Hbase 中表的大小吗?

    有什么命令可以让我了解 Hbase 中表的大小吗 我使用 Hbase 保存来自 Nutch 的爬网数据 如果您在 hadoop 上运行 hbase 可以使用以下命令 hadoop fs du path path 必须替换为hbase roo
  • 如何使用正确的参数在 C 中调用 execl() ?

    我有 vlc 重现视频的程序 如果我在 shell 中输入 home vlc home 我的电影 我想看的电影 mkv 它打开并再现电影 但是 当我运行以下程序时 include
  • Visual Studio 2010“分配给局部变量”功能?

    我很喜欢 Eclipse 中的 分配给字段 功能 基本上 当我有 getString and I type Ctrl 2 Eclipse converts this into String getString getString 这在 VS
  • 禁用 EditText 可编辑性和焦点(如 TextView)

    有没有办法制作EditText行为如TextView在 Android 中 首选 XML 我已经尝试过以下方法 android editable false android focusable false android focusable
  • Git 子模块在签出另一个分支时删除

    我的 Git 存储库中有几个具有功能的分支 每个功能都是一些外部存储库 作为子模块插入 我应该怎么做才能正确地在有子模块和没有子模块的分支之间进行切换 Example git init git commit m empty allow em
  • JSF2.0 - 具有可选方法表达式的复合组件

    我正在实现一个复合组件 但发现了一个问题 但没有找到解决方案 我指定了页面作者可以传递或不传递的属性 但无法指定方法属性 Action 的方法表达式 如果未传递该属性 则复合组件不会使用该方法属性在composite implementat
  • QT Creator 添加了 -Xarch

    我之前使用的是带有旧 GCC 的 QT Creator 现在我更新到了 4 8 版本 但是 QT Creator 添加了一个 Xarch x86 64 选项 GCC 4 8 告诉我 g error unrecognized command
  • iframe 未在 webview android 中加载

    我有一个网络视图 一切工作正常 但当我打开一个包含 iframe 的页面时 iframe 不可见 需要什么具体设置吗 首先添加硬件加速并将以下行添加到您的 webView webView setWebChromeClient new Web
  • MongoDB:使用 $concat 更新字段值时出现问题

    我正在尝试通过将 MongoDB 集合中的字段与文字字符串连接起来来更新该字段的值 除此之外 该字段是一个整数 我想在前面添加一个 0 这样它就会变成一个字符串 我读到我不能在单个更新指令中使用该字段的旧值 所以我使用forEach met
  • 在构建服务器上时,TFS 未将引用的程序集部署到测试目录

    我有编码 UI 测试项目 它引用了解决方案中的其他程序集 不知何故 某些程序集没有被复制到TestResults Out目录 而其他则被复制 所有组件都有Copy Local option true 虽然不知道这是否真的重要 并且在其他选项
  • 从基类扩展委托

    我有一个 objc 基类 protocol BaseClassDelegate interface BaseClass NSObject property nonatomic weak id