2009-07-22 22 views
2

我已經添加了一個擴展到NSData(base64擴展),我把它放在一個單獨的基礎結構類lib項目上。但是,當我從我的主項目使用這種方法,我得到這樣的錯誤:「 - [NSConcreteData encodeBase64]:無法識別的選擇發送到實例0x121e60'」。NSConcreteData vs NSData

但是,如果我在我的主項目本身保持相同的類,這將執行與任何問題。

我以下面的方式調用這個方法: [dev setToken:[token encodeBase64]];

請建議爲什麼這是行不通的,如果我把擴展名在另一個項目。 (我已經在使用一些其他擴展,例如NSDate,就像這樣,沒有任何問題。)

回答

0

問題是,配置類別所需的元數據通常會被鏈接器剝離,因爲它看起來已經死了。如果將「-ObjC」LDFLAG添加到項目中,它會告訴鏈接程序鏈接所有潛在的ObjC信息,即使它看起來已經死了。

+0

我已經在'其他鏈接標誌'中添加了-ObjC – Sreehari 2009-07-22 11:13:31

3

這是在iPhone OS 3.0上嗎? 3.0 SDK broke the use of -ObjC,但您通常可以通過將-all_load選項添加到目標應用程序中的其他鏈接器標誌來鏈接靜態庫的類別。