初期クラスのプロパティを定義する場所を知りたいだけですか?
他の言語では、クラスのコンテンツが開始される前に head でいくつかの標準プロパティを定義することに慣れています。
たとえば、ファイルへのパス。設定など。
Objective-C でこれらの初期プロパティに値を入力する場所は?
ありがとう
初期クラスのプロパティを定義する場所を知りたいだけですか?
他の言語では、クラスのコンテンツが開始される前に head でいくつかの標準プロパティを定義することに慣れています。
たとえば、ファイルへのパス。設定など。
Objective-C でこれらの初期プロパティに値を入力する場所は?
ありがとう
一般的には次のようなものです。
MyClass.h:
extern NSString * const staticValue1;
extern NSString * const staticValue2;
@interface MyClass : NSObject
{
NSString *_strval;
int _intval;
float _fltval;
}
@property (retain, nonatomic, readwrite) NSString *strval;
@property (assign, nonatomic, readwrite) int intval;
@property (assign, nonatomic, readwrite) float fltval;
@end
MyClass.m:
NSString * const staticValue1 = @"Something";
NSString * const staticValue2 = @"Something else";
@interface MyClass
@synthesize strval = _strval;
@synthesize intval = _intval;
@synthesize fltval = _fltval;
- (id)init
{
self = [super init];
if (self != nil)
{
[self setStrval:[NSString stringWithFormat:@"This is a %@", @"string"]];
[self setIntval:10];
[self setFltval:123.45f];
}
return self;
}
- (void)dealloc
{
[self setStrval:nil];
[super dealloc];
}
@end
これは、インスタンス変数のメモリを管理するためにここで使用されている合成プロパティの使用を示しています_strval
。これには、メモリ リークを回避するために保持/解放が必要です。[self setStrval]
は自動解放されたオブジェクト ( から[NSString stringWithFormat
) で初期化され、setter メソッドによって保持されることに注意してください。または、必要に応じて、これらのメソッドを次の構文を使用して呼び出すこともできます。
self.strval = [NSString stringWithFormat:@"This is a %@", @"string"];
self.intval = 10;
self.fltval = 123.45f;
おそらく、あなたが求めているもののいくつかは、クラス メソッドで実装できます。
+
クラス メソッドは(インスタンス メソッドの代わりに) でコーディングされ-
、クラスの特定のインスタンスに関連付けられていないため、インスタンス変数を参照できません。
これは、デフォルトの文字列を返すクラス メソッドです。
+ (NSString *)myDefaultString
{
return @"Some default value";
}
受信者の場所でクラス名を指定して呼び出すだけです。というクラスでメソッドを定義したとMyClass
します。次のように呼び出します。
NSString *str = [MyClass myDefaultString];
alloc
これには/init
呼び出しがないことに気付くでしょう。
パブリック プロパティは .h ファイルで定義する必要があります。
@interface MyClass {
}
@property(nonatomic, reatin) NSString *a;//Define as per needs, then synthesise in .m file
@end
プライベート プロパティの場合、.m ファイルでインライン カテゴリを定義する必要があります。
@interface MyClass ()
@property(nonatomic, reatin) NSString *b;//Define as per needs, then synthesise in .m file
@end
@implementation MyClass
@synthesize a = _a;
@synthesize b = _b;
- (void)viewDidLoad {
//You can initialise property here or in init method
self.a = @"Demo1";
self.b = @"Demo2";
}
//Now you can have other code for this class.
@end