2011-05-06 28 views
1

創建框架時有什麼辦法可以創建「私人對象」嗎? (也就是說,不會導出到外部的類)XCode 4框架 - 私人對象

我有一個問題,我的框架使用JSON庫,當使用我的框架的項目嘗試還包括JSON庫時,它們會得到「符號已定義」錯誤。

謝謝!

  • Yoav。
+0

如果是相同的JSON庫,不能包含您的框架的項目,只是不鏈接JSON框架? – 2011-05-06 21:51:11

回答

1

使用Objective-C,這是不可能的。有一些準則可以防止碰撞,例如,應該爲其他人「隱藏」的成員使用前綴,並且成員變量通常還帶有下劃線前綴(Apple保留使用2個下劃線的權利)。你使用哪個JSON框架?也許考慮SBJSON,如果你沒有使用它,它使用前綴(SB)來防止碰撞。

從蘋果公司的文檔:

前綴是編程接口名稱的重要組成部分。他們區分軟件的功能領域。通常這個軟件會被封裝在一個框架中,或者與密切相關的框架(如Foundation和Application Kit的情況)一起打包。前綴可以防止由第三方開發人員定義的符號與Apple定義的符號(以及Apple自己的框架中的符號)之間的衝突。

前綴具有規定的格式。它由兩個或者三個大寫字母,並且不使用下劃線或下面是一些例子 NS「子前綴」:基金會 NS:應用開發包 AB:通訊簿 IB:Interface Builder中

使用前綴命名時類,協議,函數,常量和typedef結構。命名方法時不要使用前綴;方法存在於由定義它們的類創建的名稱空間中。另外,不要使用前綴如果你想堅持使用JSON庫命名的結構

的領域,而「命名空間」是問題的原因,考慮增加一個前綴爲您自己的班級。

+0

感謝您的回答。我使用SBJSON,但使用我的庫的產品也是如此,這會導致衝突:)我將在y框架中更改前綴。 – user92301 2011-05-08 16:15:44

+0

您使用的其他產品包含SBJSON作爲二進制文件的一部分?如果沒有(其他產品包括代碼形式的SBJSON),那麼您可以刪除自己的版本或其他產品中包含的版本。 – 2011-05-08 22:22:36