パブリック メソッドを静的ライブラリからのみ見えるようにし、外部からは見えないようにすることができます。
方法は次のとおりです。
1) ライブラリの外で使用するヘッダー ファイルを作成する
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
@property(nonatomic,readwrite)BOOL publicProperty;
-(void)publicMethod;
@end
2) 静的ライブラリによって内部的にのみ使用されるカテゴリを作成します
#import "ClassA.h"
@interface ClassA (Internal)
@property(nonatomic,readwrite)BOOL privateProperty;
-(void)privateMethod;
@end
注: このファイルに名前を付けます:「ClassA+Internal.h」
3) .m ファイルでプライベート プロパティとメソッドを再度宣言します。
#import "ClassA.h"
@interface ClassA ()
@property(nonatomic,readwrite)BOOL privateProperty;
-(void)privateMethod;
@end
@implementation ClassA
@synthesize publicProperty;
@synthesize privateProperty;
//...
@end
静的ライブラリ内でプライベート プロパティとメソッドを使用する
ClassB.m ファイルで、ClassA カテゴリのヘッダー ファイルをインポートします。
#import "ClassB.h"
#import "ClassA.h"
#import "ClassA+Internal.h"
ClassA のプライベート プロパティとメソッドにアクセスできるようになりました。
プライベート プロパティとメソッドを使用しないスタティック ライブラリの作成
スタティック ライブラリを作成するときは、"ClassA+Internal.h" カテゴリ ヘッダー ファイルを "ビルド フェーズ"、"ヘッダーのコピー" の "プライベート" または "プロジェクト" ヘッダー セクション内に保持します。
このようにして静的ライブラリをビルドすると、ClassA+Internal.h カテゴリは外部からアクセスできなくなります。