在 Swift 2.0 中使用 属性 setter 作为选择器参数的正确语法是什么?
What is the proper syntax for using a property setter as a selector argument in Swift 2.0?
我正在尝试将计算的 属性 的 setter 作为选择器参数传递,但我不确定 Swift 2.0 中的语法。
这是我试过的一些示例代码:
class Baker: NSObject
{
var cookie: String
{
get
{
print( "Returing \( _cookie ) cookie." )
return _cookie
}
set
{
print( "Setting cookie to \( newValue )." )
_cookie = newValue
}
}
private var _cookie = "butterscotch"
func delayedCookie()
{
self.performSelector( Selector( "cookie:" ), withObject: "vanilla", afterDelay: 0.0 )
self.performSelector( Selector( "setCookie:" ), withObject: "peanutbutter", afterDelay: 0.0 )
}
}
var baker = Baker()
baker.cookie = "chocolate"
baker.delayedCookie()
// expected cookie to == "vanilla" or "peanutbutter"
baker.cookie
// cookie == "chocolate"
正确的语法是 Selector( "setFoo:" ) for computed 属性 "foo"。由于延迟而不是选择器参数的语法,测试代码在我的操场上失败了。
class Baker: NSObject
{
var cookie: String
{
get
{
print( "Returing \( _cookie ) cookie." )
return _cookie
}
set
{
print( "Setting cookie to \( newValue )." )
_cookie = newValue
}
}
private var _cookie = "butterscotch"
func cookieFunction()
{
self.performSelector( Selector( "setCookie:" ), withObject: "peanutbutter" )
}
}
var baker = Baker()
baker.cookie = "chocolate"
baker.cookieFunction()
baker.cookie
// cookie == "peanutbutter" as expected.
我正在尝试将计算的 属性 的 setter 作为选择器参数传递,但我不确定 Swift 2.0 中的语法。
这是我试过的一些示例代码:
class Baker: NSObject
{
var cookie: String
{
get
{
print( "Returing \( _cookie ) cookie." )
return _cookie
}
set
{
print( "Setting cookie to \( newValue )." )
_cookie = newValue
}
}
private var _cookie = "butterscotch"
func delayedCookie()
{
self.performSelector( Selector( "cookie:" ), withObject: "vanilla", afterDelay: 0.0 )
self.performSelector( Selector( "setCookie:" ), withObject: "peanutbutter", afterDelay: 0.0 )
}
}
var baker = Baker()
baker.cookie = "chocolate"
baker.delayedCookie()
// expected cookie to == "vanilla" or "peanutbutter"
baker.cookie
// cookie == "chocolate"
正确的语法是 Selector( "setFoo:" ) for computed 属性 "foo"。由于延迟而不是选择器参数的语法,测试代码在我的操场上失败了。
class Baker: NSObject
{
var cookie: String
{
get
{
print( "Returing \( _cookie ) cookie." )
return _cookie
}
set
{
print( "Setting cookie to \( newValue )." )
_cookie = newValue
}
}
private var _cookie = "butterscotch"
func cookieFunction()
{
self.performSelector( Selector( "setCookie:" ), withObject: "peanutbutter" )
}
}
var baker = Baker()
baker.cookie = "chocolate"
baker.cookieFunction()
baker.cookie
// cookie == "peanutbutter" as expected.