2015-10-11 50 views

回答

0

該接口與實現無關。例如,下面的協議

protocol P { 
    var value : Int { get } 
} 

可以這樣實現:

struct S : P { 
    let value = 0 
} 

因爲該屬性的唯一要求是要gettable,它是。

但是我不知道它爲什麼不是一個枚舉,但我高度懷疑這是因爲一些古老的Objective-C的東西。

編輯:也許這是因爲所有的方法,採取參數UInt作爲編碼,因爲與枚舉這將是NSEncoding.Unicode.rawValue這將鼓舞所有的Objective-C人。

2

http://nshipster.com/rawoptionsettype指出(通常)NSENUM註釋C enums的轉換實際上是一個Swift enum。我會推測在這種情況下的醜陋轉換是由於未遵守前綴命名約定。如果它是NSStringEncodingUTF8等,Apple可能會讓Swift頭部遵循Mattt的模式。鑑於這些常數有多大,它們可能早於這些慣例。

尤其https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html狀態:

枚舉

默認情況下,斯威夫特通過截取枚舉值 名稱前綴進口枚舉。

由於前綴約定沒有得到遵守,如果他們只是進口的目的C頭直接,他們就已經結束了與像NSStringEncoding.NSJapaneseEUCStringEncoding怪物,他們必須判斷,最好有一個度身定造斯威夫特頭代替。

相關問題