2

私は最近Objective-Cを学び始めました。年齢、名前、そして重要なことにクラスのプロパティを持つ「Student」というクラスを作成することにしました。NSStringでいっぱいのNSArrayにクラスを配置しました。私の問題は、@ propertyとして定義すると、setterメソッドとgetterメソッドが自動的に作成されることです。私は私のクラスでそれを望んでいません。セッターとゲッターを許可せずに、NSArrayをクラスのプライベートデータとして定義するにはどうすればよいですか?

ヘッダーコードは次のとおりです。

#import <Foundation/Foundation.h>


@interface Student : NSObject

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;
@property NSMutableArray * Classes;

@end

[NSGreeter ThanksGuys];

4

3 に答える 3

4

人気のあるオプションがいくつかあります。もちろん、必要に応じてタイプを置き換えることができます。

A:

ヘッダーに配置し、@privateアクセスを指定します。

// Student.h
@interface Student : NSObject
{
@private // << note: protected is the default when declared in this scope.
   NSArray * ivar;
}
@end

B:

@implementationブロックに配置します。アクセスを指定することもできますが、他の翻訳では表示されないため、通常は問題になりません。

// Student.m
@implementation Student
{
@private // << note: private is the default when declared in this scope.
   NSArray * ivar;
}
@end

C:

クラスの続きでそれを宣言します:

// Student.m
@interface Student ()
{
  NSArray * ivar;
}

@end

D:

クラス継続のプロパティとして宣言します。

// Student.m
@interface Student ()

@property (nonatomic, copy) NSArray * ivar;

@end
于 2012-08-23T19:35:59.233 に答える
2
@interface Student : NSObject {

    @private
    NSMutableArray * Classes;

}

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;

@end
于 2012-08-23T19:34:57.110 に答える
1

キーワード@privateを使用します

@interface Student : NSObject
{
    @private
    NSMutableArray * Classes;
}

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;

@end
于 2012-08-23T19:36:20.247 に答える