在 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.