當我使用像Three20 Framework這樣的大型框架時,我總是可以選擇是#import整個框架還是#import只需要它的單個文件。objective-C#import整個框架還是隻需要文件?
我想在編譯開銷方面有所不同,因爲它必須打開框架的所有文件,但是是否也存在運行時差異?像更大的內存使用量?還是編譯器優化已經刪除了一切不需要的東西?
如果我在每個類中使用相同的框架,建議將框架包含在前綴文件中而不是每個類中?
問候 無限:)
當我使用像Three20 Framework這樣的大型框架時,我總是可以選擇是#import整個框架還是#import只需要它的單個文件。objective-C#import整個框架還是隻需要文件?
我想在編譯開銷方面有所不同,因爲它必須打開框架的所有文件,但是是否也存在運行時差異?像更大的內存使用量?還是編譯器優化已經刪除了一切不需要的東西?
如果我在每個類中使用相同的框架,建議將框架包含在前綴文件中而不是每個類中?
問候 無限:)
會出現彙編差異,是的:包括所有內容都需要更長的時間才能編譯。但不應該存在運行時差異。
您的想法將框架包含在前綴中對於您將始終使用的框架來說是一個好主意。但是,有一個問題是,如果您在該框架中更改了某個代碼,那麼您的代碼庫將不得不重新編譯。
有一個在運行時沒有任何性能損失。無論您導入多少個框架或文件,如果您不使用任何類,它們在編譯時不會影響生成的字節碼。編譯器甚至沒有優化任何東西;未使用的課程「根本就不存在」。
如果您確定需要,請將框架包含在預編譯頭文件中。
除非您實際使用類,否則您的腳印將不會有任何不同,但我更喜歡使用我的標題更節儉,僅包含我需要的標題。如果我需要很多來自同一個庫(比如Three20),那麼你可以添加整個引用。
只在前綴中包含的標頭變化不大,但會大大加快編譯速度。
我不是在爭吵,但他不需要爲他不想使用的課程實施一些委託方法?由於某些框架類文件可能包含要在其子類中實現的委託? – 2011-06-06 09:34:46
你只需要爲你創建的對象實現委託方法* - 如果你只是導入頭文件,這不是必須的。對於我們在這裏討論的框架Three20肯定是這樣。 – lxt 2011-06-06 09:59:14
是的正確。謝謝回答 :) – 2011-06-06 10:00:11