簡體   English   中英

Objective-C類別成效

[英]Objective-C Category Performance

如果我使用類別將Objective-C類的實現分解為多個@implementation塊,那么這將使我的iOS應用程序生成的二進制文件更大還是會完全影響性能?

顯然,您無法在運行時獲取類的類別詳細信息嗎? 因此,假設其他所有條件都相等,那么生成的二進制數在帶類別或不帶類別的情況下是否應該相同?

背景

我有一個非常復雜的UIViewController的自定義子類。

iOS開發人員庫:使用Objective-C進行編程:類別

除了將方法添加到現有類之外,您還可以使用類別在多個源代碼文件中拆分復雜類的實現。 例如,如果幾何計算,顏色和漸變等特別復雜,則可以將自定義用戶界面元素的圖形代碼放在單獨的文件中,以實現的其余部分。

關於類別的另一個@implementation (例如,與#pragma mark相比)是Xcode使您可以對整個@implementation塊進行代碼折疊(但不能折疊兩個#pragma mark之間的代碼)。 如果要將類別(可以折疊)保留在與主類相同的文件中,這將很有用。

鏈接器在可能的情況下合並類和類別。 如果您的類及其類別在構建時都鏈接到同一個可執行文件中,那么成本為零。

井類別會動態加載,然后與原始類別“合並”。 這種動態加載當然會產生一些開銷,但是一旦完成,對其的方法調用就不會產生任何其他開銷

如果編譯器類似於c ++,那么它可能只是將新函數添加到類的虛擬方法表中。 我要聲明,我正在做一個假設。 但是,這似乎合乎邏輯,因為編譯器嚴格禁止您添加實例變量。 就代碼組織而言,根據以下鏈接的文檔,我認為您應該沒問題:

http://objc.toodarkpark.net/moreobjc.html#756 :“如何使用類別”部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM