- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在网上的某个地方看到了这个例子:
let newButton:UIButton = {
let button = UIButton()
return button
}()
当我添加:
button.addTarget(self, action: Selector("someAction"), forControlEvents: UIControlEvents.TouchUpInside)
我收到错误信息:
Cannot convert value of type 'NSObject -> () -> ViewController' to expected argument type 'AnyObject?'
只是想澄清为什么我不能在这里引用 self 以及我如何才能使这项工作成为可能。
最佳答案
您不能引用 self
,因为常量在 self
初始化之前设置。
您可以通过将其声明为 lazy var
而不是 let
来解决该问题。通过声明它 lazy var
,您是在告诉您希望 var
在第一次使用时被初始化:
lazy var newButton: UIButton = {
let button = UIButton()
button.addTarget(self, action: Selector("someAction"), forControlEvents: UIControlEvents.TouchUpInside)
return button
}()
附带说明一下,对于 Swift 2.2,您应该将选择器定义为 #selector(YourClass.someAction)
关于swift - 定义属性时无法在闭包中引用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37420307/
我在一个简单的 GTK 应用程序中有两个小部件: extern crate gdk; extern crate gtk; use super::desktop_entry::DesktopEntry;
我想做这样的事情: const vegetableColors = {corn: 'yellow', peas: 'green'}; const {*} = vegetableColors; cons
该属性它存储在 gradle 中的什么位置? subprojects { println it.class.name // DefaultProject_Decorated depen
我想在 jQuery 闭包中看到窗口属性“otherName”描述符。但 进入 jQuery 闭包 'otherName' 描述符显示未定义,我认为可能 是 getOwnPropertyDescrip
我曾经看过 Douglas Crockford 的一次演讲,在 javascript 的上下文中,他提到将 secret 存储在闭包中可能很有用。 我想这可以在 Java 中像这样天真地实现: pub
我很难理解 Swift 中闭包中真正发生的事情,希望有人能帮助我理解。 class MyClass { func printWhatever(words: String) {
我有两个 3 表:用户、个人资料、friend_request $my_profile_id变量存储用户个人资料ID的值 $my_user_id = Auth::user()->id; $my_pro
我正在尝试通过使用 GLFW 的包装来学习 Swift GLFW 允许添加错误回调: GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cb
我是一名优秀的程序员,十分优秀!