簡體   English   中英

Swift-使用CGSize執行選擇器

[英]Swift - perform selector with CGSize

我有這個電話:

myObject.perform(Selector("setCellSize:"), with: CGSize(width: 50.0, height: 50.0))

在班上我有:

func setCellSize(_ size: CGSize) {
    print(size)
    self.itemSize = size
}    

該方法已正確調用,但會打印(0.0, 7.2911220195564e-304) 怎么了?

perform(_:with:)NSObjectProtocol的方法,

使用對象作為參數向接收方發送消息。

尤其是,

aSelector應該標識一個采用id類型的單個參數的方法。 對於具有其他參數類型和返回值的方法,請使用NSInvocation。

如果您確實必須通過此方法傳遞CGSize ,則可以將其包裝到NSValue

let value = NSValue(cgSize: CGSize(width: 50.0, height: 50.0))
myObject.perform(#selector(setCellSize(_:)), with: value)


func setCellSize(_ size: NSValue) {
    print(size.cgSizeValue)
}

CGSize不是對象。 這是一個結構。 您正在打印傳遞給安裝員的亂碼。 該功能適用於對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM