In Swift documentation, it says the following:在Swift中使用'Any'有什麼意義?何時使用'Any'以及何時使用'AnyObject'?
夫特提供了兩種特殊類型的別名與非特定類型的工作: AnyObject可以表示任何類型的一個實例。 除函數類型外,任何類型都可以表示任何類型的實例。 注意 只有當您明確需要它們提供的行爲和功能時才使用Any和AnyObject。對代碼中期望使用的類型進行具體說明總是更好。
如果我理解正確的話,AnyObject
時,應使用它與類類型兼容,這意味着它不能代表斯威夫特的內置String
,Int
,Dictionary
,Array
,等...因爲這些都表示爲結構,而不是類,在Swift中。
然而,當我寫了下面的代碼,它可以被編譯沒有任何錯誤:
var myInt: Int = 10
var myStr: String = "st"
var myDict:Dictionary<String, AnyObject> = ["k1": "1", "k2": 2, "k3": true]
var myArr:Array<AnyObject> = []
myArr.append(myInt)
myArr.append(myStr)
myArr.append(myDict)
println(myArr)
因爲我定義myArr
爲AnyObject[]
,它應該能夠只包含類類型,而myInt
,myStr
,和myDict
都與Any
兼容,而不是AnyObject
,並且Any
與「AnyObject」不兼容。
但是,我認爲它可以編譯的原因是因爲myInt
可以在內部轉換爲Objective-C的NSInteger
,這是AnyObject
的子類型。 String
/NSString
和Dictionary
/NSDictionary
也是如此。我的猜測是正確的嗎?然後,這裏是我的問題:
即使你可以定義斯威夫特的陣列爲
AnyObject
,而且可以存儲斯威夫特的結構像Int
或String
,有什麼用Any
點?是否有任何情況需要將數組定義爲Any
?Dictionary
的價值類型如何?我應該如何決定何時使用
Any
以及何時使用AnyObject
,尤其是如果我處理的類型可以是轉換爲Objective-C的對象,像String
,Int
,Dictionary
等?
我想在可可和可可觸摸最方法返回AnyObject!
,不Any!
。所以我想知道在Swift的數組和字典的值類型中使用Any
的最佳情況是什麼。
看起來像這樣在種子2中發生了變化。我猜他們甚至不知道他們在做什麼。 –
我使用Xcode 6 Beta 2.我還添加了'import Foundation',但沒有它的代碼被編譯。 – Blaszard