2017-04-09 78 views
1

我寫了SDK,並且使用公共API標頭MyClass.h如何爲我的項目公開方法但不公開API?

某些方法不會寫入標頭,如- (void)foo;,因此用戶不能使用它們。

但是,我的其他班級使用方法foo,但因爲它沒有在MyClass.h註冊 - 我也不能使用它。

所以希望調用方法foo我寫的每一個類:

@interface MyClass() 
- (void) foo; 
@end 

是否合法?我需要在另外三門課上寫同樣的東西,看起來很奇怪。

那麼發佈的最佳做法是什麼?內部使用方法但不適用於公共API?

回答

2

創建一個新文件。使用「Objective-C文件」模板:

choosing a file template 對於「文件」,輸入「項目」。對於「文件類型」,選擇「擴展名」。對於「類」,輸入「MyClass的」(或任何你真正的類名):

setting the file options

Xcode中創建一個名爲MyClass_Project.h一個新的文件。在這個文件中,聲明你的唯一項目的方法:

#import "MyClass.h" 

@interface MyClass() 

- (void)foo; 

@end 

然後,在每一個.m文件需要使用這些方法之一,並且在MyClass.m,進口MyClass_Project.h。任何輸入MyClass_Project.h的文件都不需要導入MyClass.h

+0

爲什麼我需要在'MyClass.m'中導入'MyClass_Project.h'? – snaggs

+0

爲了讓編譯器驗證你的方法簽名是否匹配,並且你的類定義了所有在MyClass_Project.h中聲明的方法。 –