1. ホーム
  2. objective-c

[解決済み] 宣言されたプロパティは、対応するインスタンス変数を必要としますか?

2022-12-01 08:31:16

質問

Objective-C 2.0のプロパティは、対応するインスタンス変数を宣言する必要があるのでしょうか。たとえば、私はこのようなことをするのに慣れています。

MyObject.h

@interface MyObject : NSObject {
NSString *name;
}
@property (nonatomic, retain) NSString *name;
@end

MyObject.m

@implementation
@synthesize name;
@end

しかし、代わりにこうしたらどうでしょう。

MyObject.h

@interface MyObject : NSObject {
}
@property (nonatomic, retain) NSString *name;
@end

これはまだ有効ですか?また、私の前の例と何か違うのでしょうか?

どのように解決するのですか?

Modern Objective-C Runtime (iOS 3.x 以上、または 64 ビット Snow Leopard 以上) を使用している場合、次の操作を行います。 ではなく このような場合、プロパティに ivar を定義する必要があります。

このような場合 @synthesize を指定すると、事実上ivarはあなたのために合成されることになります。これは、quot;fragile-ivar" シナリオを回避するものです。これについては Cocoa with Love