1

私は次の目的のCクラスを書きました..

@interface thumb_user_info : NSObject
{
@public // Otherwise I was not able to access in other class.
    NSString *user_name;
    int       user_id;
}
@end

他のクラスでインスタンスを作成し、user_id の値を設定しようとすると、「保護されています」というエラーが表示され、上記のように公開せずにこれらの ivar にアクセスする方法が表示されます。私はObjective Cの基本を知っています。自分自身を明確にすることを躊躇したくありません。

注:私も合成してみました...それでも同じエラー...

ありがとう。

4

2 に答える 2

3

あなたが求めているのは、OOP の基本の 1 つであるオブジェクト指向プログラミングです。

私有財産を私有にすることで、外界から私有財産をカプセル化し、バインドし、隠します。

それらを表示したい場合は、公開します。

それらを非表示にするが継承可能にしたい場合は、保護します。

そのため、外部の自己クラスからプライベート ivar/メソッドにアクセスする方法はありません。

プライベート ivars 値にアクセスする場合は、パブリック メソッドを作成し、間接的に値を取得/返します。

synthesize は ivar (private/protected/public) のメソッドを作成し、.h にある場合は public になります。

于 2013-01-23T09:54:12.183 に答える
2

プロパティではなくインスタンス var であるため、値を設定することはできませんyourclass.user_name = userName。次のような値を設定するメソッドを追加する必要があると思います。

- (void)setupUserName:(NSString *)userName
{
    user_name = userName
}
于 2013-01-23T10:01:46.053 に答える