2014-12-25 73 views
-1

我有一個有效載荷從一個系統的一部分穿梭到另一個。任何不同於anyObject

梭子攜帶有效載荷的任何,所以我可以攜帶任何類型的對象,包括像元組非對象等

該系統的部件中的一個被接受AnyObject所以是錯誤。

我很困惑,想用什麼類型的東西來運載東西,所以它在系統的所有部分之間都是兼容的。

如果您不關心它們的實際類型,我應該做出一個選擇並堅持其中一種類型,作爲整個系統的Any或AnyObject類型,或者是穿梭物品的最佳選擇。

我們必須在可以隨身攜帶任何其他語言的類型Object,但不知道如何工作的SWIFT世界

還是有可能在兩者之間合作鑄件?如果我100%確信,未來的目標是AnyObject,我可以從航天飛機(任何)作爲AnyObject

注意加載其關閉,以負選民:請幫忙清理的問題,如果它不」對你來說沒有任何意義,或者有助於改善這個問題,因爲我是SWIFT的新手。我需要一個答案,而不是你的投票。

編輯

,我必須AnyAnyObject而單元測試,你會如何處理這樣的情況之間做對比的情況。

class Test { 
    var name: String = "test" 
} 

var anyObject: AnyObject = Test() 

var any: Any = anyObject 

//XCTAssert(any == anyObject, "Expecting them to be equal") 
any == anyObject 

回答

1

Any將持有任何一種類型的,包括結構和枚舉以及類。 AnyObject只會保留課程。所以Any可以存儲什麼AnyObject可以的超集。沒有任何投射量會將您的自定義結構或枚舉填入AnyObject

有時好像AnyObject拿着一個結構,如String,但它不是,現在的情況是,一路上雨燕轉換某處你StringNSString(這是一類,因此可以存儲在一個AnyObject)。

(在技術上,Any被定義爲一些實現0或多個協議,其中任何確實,而AnyObject被定義爲特殊的協議的所有類隱式地符合,並且被標記爲@objc協議,所以只有類可以符合它)

編輯:爲您解答有關問題的比較 - 沒有==運營商AnyAnyObject(它會如何,如果你在等同於含有Any一個StringAnyInt工作)?在使用適當定義的該類型的運算符進行比較之前,必須將雙方恢復到原來的狀態。

+0

謝謝先生,我已經編輯了一些關於此的更多細節,以瞭解如何在兩者之間進行互操作,儘管我已決定堅持使用我的系統中的任何位置,所以我不會創建衝突在兩者之間分配和分配 – user2727195

+0

我還注意到,任何類實例/對象的隱含性變成了'AnyObject'。 – user2727195

+0

已更新,以涵蓋編輯(儘管真的這是一個單獨的問題,你應該單獨發佈)。我還強烈建議尋找泛型或協議,而不是訴諸任何方法來傳遞物體。 Apple Swift書中有更多信息。 –

相關問題