[英]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.