2

これが私の質問です。

WebServiceBase.h というクラスがあるとします。そして、NSString *requestData というクラスに iVar を追加する必要があります。しかし、その iVar をヘッダー ファイルに追加して、外部のユーザーに見えるようにする必要はありません。(これをクラス ライブラリとして配布する場合)

また、WebServiceBase.h から拡張された他のクラス内で、この requestData iVar にアクセスできる必要があります。(これらの拡張クラスは私が作成したものです。外部の人からではありません)

クラス拡張内で requestData iVar を宣言してみました。ただし、拡張クラスには表示されません。

これに対する解決策はありますか?データを保護し、外界から隠す必要があります。

4

4 に答える 4

3

キーワードを使用して ivar を保護されたものとして定義できます。@protectedつまり、クラスとすべてのサブクラスは問題なくアクセスできますが、コンパイラは、基本クラスから継承しない他のクラスに対してこれを許可しません。

@interface Foo : NSObject
{
@protected
    NSObject *a;
}

それと同じくらい簡単で、Objective-C から得られるすべての安全性をすでに提供しています。

于 2012-07-29T07:52:01.137 に答える
1

@implementation ブロックに ivar 定義ブロックを含めることができます。

于 2012-07-29T07:31:41.880 に答える
0

2通りありますので、お好きな方をお選びください。

    1).h file
    @interface YourClass
    {
    }

    .m file
    @interface YourClass ()
    @property (nonatomic, retain) NSString *title;
    @end

    @implementation YourClass

    @synthesize title;

    //your method


    2) .h flie 
    @interface YourClass
    {
    }

    .m file
    @implementation YourClass  
    {  
        NSString *title;   
    }  

//your method
于 2012-07-29T07:39:45.123 に答える
0

別の .h ファイルで ivar を定義するクラス拡張を宣言します。のように呼んでくださいmyclass-private.h。次に、そのヘッダーをメイン クラスとサブクラスの両方にインポートします。

于 2012-07-29T08:58:07.227 に答える