誰かが、私はクラスの唯一のインスタンスは、それらを参照できるように、プライベートプロパティを作ることができる(自己経由。)プロパティを非公開にするにはどうすればよいですか?
しかし、私はクラスインターフェイスで@privateを使用して、通常のプロパティを宣言した場合、それを私に言いましたクラスの外からでもアクセスできます...どうすればプロパティを非公開にできますか?構文例をご覧ください。
誰かが、私はクラスの唯一のインスタンスは、それらを参照できるように、プライベートプロパティを作ることができる(自己経由。)プロパティを非公開にするにはどうすればよいですか?
しかし、私はクラスインターフェイスで@privateを使用して、通常のプロパティを宣言した場合、それを私に言いましたクラスの外からでもアクセスできます...どうすればプロパティを非公開にできますか?構文例をご覧ください。
これらのプロパティをクラス拡張に含める必要があります。これにより、インターフェース宣言の中の実装ファイル内のプロパティー(そして最近はiVars)を定義することができます。カテゴリの定義に似ていますが、かっこの間に名前はありません。
だからこれはあなたのMyClass.mファイルの場合:
// Class Extension Definition in the implementation file
@interface MyClass()
@property (nonatomic, retain) NSString *myString;
@end
@implementation MyClass
- (id)init
{
self = [super init];
if(self)
{
// This property can only be accessed within the class
self.myString = @"Hello!";
}
}
@end
は、実装(.M)ファイル内のプロパティを宣言しますので、のような:
@interface MyClass()
@property (nonatomic, retain) MyPrivateClass *secretProperty;
@end
はあなたが使用することができますコンパイラの警告なしでクラス内のそのプロパティ。
クラス拡張は、アクセスが必要なクラスでのみインポートするようにヘッダーファイルに入れることができます。したがって、「ライブラリプライベート」プロパティを効果的に許可します。 – bbum