我试图将计算属性的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"
对于计算属性"foo",正确的语法是Selector("setFoo:")。由于延迟而不是选择器参数的语法,测试代码在我的游乐场失败。
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.