从基类扩展委托

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(使用前将#替换为@)

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

  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • iOS 中 NSDecimalNumber 的小数分隔符错误

    我尝试通过以下方式输出具有正确的小数分隔符的十进制数的描述 NSString strValue 9 94300 NSDecimalNumber decimalNumber NSDecimalNumber decimalNumberWithS
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • 如何在没有 SDK 的情况下在 Objective C 中为 S3 创建预签名 URL?

    我正在构建一个 mac 应用程序not使用 AWS iOS 开发工具包 我尝试构建的 GET 请求应遵循以下通用格式 Authorization AWS AWSAccessKeyId base64 hmac sha1 VERB n CONT
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 处理 UICollectionView 中的点击手势

    由于我无法使用任何框架来创建相册 因此我尝试使用 Collection View 创建自己的相册 但我一开始就陷入困境 我的目标是将网络服务中的所有图像显示到我的集合视图中 因为所有图像都已显示 下一步是当有人点击任何单元格时 我可以在新视
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 为什么 Objective-C 允许在方法定义末尾使用分号? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 实现文件中方法名后面的分号 https stackoverflow com questions 5678360 semicolon after the method name
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 如何为 UIImageView 随机化器实现滑动手势

    我一直在浏览大量的教程和问题 但似乎找不到我要找的东西 我有一种感觉 我只是错过了一个简单的步骤 我仍在学习诀窍 所以请承受和我一起做这个 我正在 xcode 4 3 3 上制作图像随机化器 并且我已经能够使用按钮来随机化图像 但我希望它能
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 如何将使用 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