首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >var上的swift 2.2 #选择器

var上的swift 2.2 #选择器
EN

Stack Overflow用户
提问于 2016-04-05 10:16:01
回答 1查看 1.3K关注 0票数 1

我使用Typhoon,我需要用于注入属性的选择器

代码语言:javascript
复制
definition.injectProperty(Selector("viewModel"), with: self.viewModel.inviteViewModel())

但是编译器没有将选择器定义为var。

例如:如果我有var viewModel: AuthViewModel!

使用#selector(viewModel)

所以我得到了Argument of '#selector' cannot refer to a property

更新:

我有问题是因为斯威夫特的旧台风。我解决了我的问题,如放弃台风,并切换到Swinject。另外,现在我可以使用struct进行注入,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-05 11:04:54

您对可以传递到#selector()中的内容有误解。您绝对应该阅读Eric发布的StackOverflow问题:

概述可以使用#selector()的内容:Understanding Swift 2.2 Selector Syntax - #selector()

不能将Swift属性传递给#selector()的原因

选择器可用性:选择器引用的方法必须公开给ObjC运行时。如果它位于(最终)从NSObject继承的类中,则已经是这种情况,但是如果它位于一个纯Swift类中,则需要用@objc作为该方法声明的前缀。请记住,私有符号也不会暴露在运行时中--您的方法至少需要内部可见性。

-引用自https://stackoverflow.com/questions/24007650/selector-in-swift/24007718#24007718

简而言之,您不能传入一个var,您需要传递一个目标-C运行时知道的函数。它要么是Objective方法,要么是标记为@objc的Swift方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36423498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档