簡體   English   中英

objective-c私有與公共方法和標題中的聲明是否?

[英]objective-c private versus public methods and declaration in header or not?

Objective-c中私有方法的最佳實踐方法是什么? 這是一種僅用於將類作為輔助方法的方法。

特別是我不清楚的是:

  1. 是否需要將頭文件中指定的方法設為私有? 即為什么不把它從頭文件中刪除,並且
  2. 如果你可以將它從頭文件中刪除,那么擁有私有方法有什么意義呢?
  3. 或者在objective-c中的情況是沒有真正的私有方法這樣的東西,在這種情況下,最好只指定頭文件中的所有內容並且根本沒有標記私有的麻煩?

謝謝

無需在公共頭文件中指定方法。 如果模塊中的類應該是“朋友”,您可能需要一個“私有”頭文件供模塊中的其他類使用。 您甚至可以擁有一個“受保護”的頭文件,例如Apple使用UIGestureRecognizerSubclass.h 但這完全是慣例,語言本身並不支持。

Objective-C中的私有方法只是一個沒有公開記錄的方法; 任何方法仍然可以從任何地方調用,只要調用者知道它的名稱,以便創建適當的選擇器。 不公開記錄方法的優點是您可以自由更改或刪除它而不必擔心向后兼容性。 將它們從頭文件中刪除是一種不公開記錄它們的方法。

您可能想要使用的內容稱為“類擴展”。 它們看起來很相似,但不應與類別混淆。 這將允許您在.m文件中聲明私有方法,並且您將獲得所有不錯的IDE更正和建議。

這是一篇不錯的文章
和一個相關的SO問題

最佳實踐(甚至是檢查的編譯器選項)是所有方法都以某種方式聲明。 要“隱藏”幫助方法不被窺探,請在實現.m文件中聲明它,如:

#import Client;

@interface myClass (Private)
- (void) privateMethod;
- (float) bankAccountBalanceForClient:(Client *)client;
@end

@implementation myClass
- (void) privateMethod;
{
    //foo here
}

等等。 私有方法是一個名為Private of myClass方法的類別。 這個類別可以在任何地方聲明,甚至可以在名為私有方法的主.h文件中聲明,盡管這將是一個維護噩夢。

因此,使用公共方法的公共.h文件和聲明私有方法的.m文件,您可以在某處聲明所有方法。 我使用這個編譯器選項來確保並強制它,以便所使用的任何方法實際上都在某處聲明(或者我得到語法錯誤)因此我沒有因為找不到方法而導致任何運行時崩潰。

暫無
暫無

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

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