11
我想實現類似「registerClassForAction」的東西。 爲此,我已經定義了一個協議:Swift:符合協議的實例化類(AnyClass)
@objc protocol TestProt {
func testMe() -> String
}
讓我們做一個類聲明:
class TestClass: NSObject, TestProt {
func testMe() -> String {
return "test"
}
}
我定義的函數註冊在另一大類對象:
func registerClassForAction(aClass: AnyClass) { ... }
切換到REPL,我會模擬註冊方法:
let aClass: AnyClass = TestClass.classForCoder() //or .self
let tClass = aClass as NSObject.Type
let tInst = tClass() as TestProt
tInst.testMe()
目前這個工作,但有另一種方式來實例化tClass,比
let tClass = aClass as NSObject.Type
理由要求其他,我想探索擺脫NSObject的的機會,所以我的TestClass不到從NSObject繼承。代表團被考慮了,但是我想控制tInst的生命週期,並且能夠在特定的時間點解除它的分配。
感謝您幫助
羅恩
「定義一個函數來註冊對象在另一類「是代表團。我建議你的調用對象創建一個TestProt委託屬性,併爲其分配TestClass。類型鑄造體操充其量混淆。 – 2015-02-23 02:38:21
你是對的 - 我受到UITableViewController的'registerClass:forCellWithReuseIdentifier:'方法的啓發。但我也想控制班級的生命週期,因爲它只在特定的時間需要,然後可以放開。不知道委派是否是正確的選擇。出於好奇,我正在學習Swift的實例化和協議一致性,所以這似乎是一個很好的練習。 – Ron 2015-02-23 02:43:32