当前位置: 首页 > 面试题库 >

具有目标选择器的快速访问控制

鞠宏恺
2023-03-14
问题内容

看下面的示例代码:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let letterButton = UIButton.buttonWithType(.Custom) as UIButton
        self.view.addSubview(letterButton)
        letterButton.addTarget(self, action:Selector("buttonDidTap:"), forControlEvents: .TouchUpInside)

    }

    func buttonDidTap(button: UIButton!) {
        print(button.char)
    }

}

UIButton只要Selector是 公共的内部的 ,目标操作就可以正常工作,但是如果Selector是 私有的
,则它会由于 无法识别的选择器发送到实例 而崩溃 __

有什么办法可以实现?我不想公开水龙头功能或内部水龙头功能。


问题答案:

您需要@objc向objc运行时公开一个私有方法

@objc private func buttonDidTap(button:UIButton!) {
    println(button.char)
}

从Xcode6
beta4发行说明

如果没有另外注释,标记为私有的声明不会暴露给Objective-
C运行时。无论访问级别如何,IB出口,IB动作和核心数据管理的属性始终向Objective-C公开。如果需要可从Objective-
C调用的私有方法或属性(例如,对于使用基于选择器的回调的较旧API),请在声明中显式添加@objc属性。!



 类似资料:
  • 问题内容: 我想知道我们可以快速实现强类型选择器吗?例如,如果稍后在我的视图控制器中有一个方法命名,当我们将该方法作为目标添加到某个按钮时,我们可以说 问题答案: Swift 2.2具有使用语法编译时检查的选择器,请参阅https://swift.org/blog/swift-2-2-new- features/ 以及将Swift与Cocoa和Objective-C一起使用(Swift 2.2)

  • 在linux机器中,可以通过使用R中的< code>Sys.readlink函数或命令行中的< code>readlink来访问符号链接指向的位置。阅读它的文档,我们发现这不是为Windows快捷方式设计的。 在视窗系统中,我找不到一个行来告诉我文件指向哪里。我最接近的是从这个演示使用的SO问题中得到的。虽然输出并不完美,但我想用一些正则表达式魔法我可以隔离文件路径。 然而,当我尝试时,收到错误消

  • 一个URI,除了可以直接指向某文档外,还可以通过井号(#)后跟一个锚点或元素 id,来指向页面的某个特定元素。 目标伪类选择器,就是用来匹配页面上被URI的某个标识符指定的目标元素,并为它应用样式。 表 2-8 目标伪类选择器 选择器 功能描述 版本 E:target 选择该文档中特定“id”的元素 3 假如在 index.htm 页面中有 3 个<a>元素,id 为catlog、about、co

  • 我有一个方法可以创建一个带有节点和关系的图。我想将节点ID列表返回给调用方,以便后面的步骤可以快速定位这些节点并创建其他关系。我将无法返回节点实例。 在SQL世界中,我可以返回主键或唯一键。在neo4j的世界里,我应该回报什么?是否有一个唯一的节点标识符,我可以使用,而不会注定自己的地狱第七级?我有自己的身份证吗?由于我沉迷于SQL,我在学习Neo4J方法时遇到了困难。

  • 传统的对象检索始终是整个实体,即5 GiB对象的GetObject将始终返回5 GiB数据。S3 Select API允许我们使用简单的SQL表达式来检索数据的子集。通过使用Select API仅检索应用程序所需的数据,可以实现大幅的性能改进。 您可以使用Select API查询具有以下功能的对象: CSV,JSON和Parquet-对象必须为CSV,JSON或Parquet格式。 UTF-8是S

  • 问题内容: 我有以下CSS: 我想使用jQuery更改顶部,左侧和底部边框的边框宽度。我使用什么选择器访问该元素?我尝试了以下方法,但似乎没有用。 问题答案: 您无法操作,因为从技术上讲,它不是DOM的一部分,因此任何JavaScript都无法访问它。但是您 可以 添加具有指定的新类的新类。 CSS: JS: 更新: 虽然不可能 _直接_修改内容,但是有一些方法可以使用JavaScript读取和/