2013-10-24 29 views
0

。我在我的項目中使用了OAuthConsummer來連接到Twitter。這個Consummer有好幾個版本,在我的項目中,它有一些頭文件(.h)和一個擴展名爲.a的文件。我想要一個名爲「OAMutableURLRequest」的類的子類,並覆蓋一些舊的方法,所以我添加了兩個文件:頭文件和implmentation文件,並帶有重寫的方法。這個解決方案對我來說很長一段時間。然而,今天當我用Xcode 5.0.1構建iOS 7時,我的應用程序崩潰,出現錯誤,我的重寫方法不存在(NSInvalidArgumentException)。今天我遇到了一個奇怪的問題,在靜態庫中創建了一個類

所以總而言之,我的問題是:我如何才能繼承屬於一個庫的類只有頭文件和文件.a?

回答

1

是的,你可以!如果你想到Apple框架,除了頭文件和預編譯的庫,沒有別的...

如果你在iOS7中有運行時崩潰檢查某個方法已被刪除或更改,或者你正在調用你的子類的方法一個超類的實例...如果你想完全覆蓋一個方法行爲,並且你完全不關心原始類的方法實現,你可以在原始類上創建一個類別,注意!因爲你將無法訪問該方法的原始實現,並且在類別中不可能添加新的類成員(ivar)!但是,如果方法存在於超類中,您總是可以調用超類實現。

+0

謝謝,這真的很奇怪。我一次又一次清理項目,但它仍然崩潰,直到我刪除派生的數據。現在它可以工作。我很困惑。 – lenhhoxung

+1

可能你的子類是預編譯的,並且基於舊版本的SDK(iOS6.x SDK),也許在iOS7 SDK中對某些方法進行了一些更改,所以預編譯的子類調用了超類的舊實現的內部方法。清理你的派生數據,你必須在新的超類實現的基礎上重新編譯子類...我想這可以解釋... – Manu

相關問題