myPropertyName
クラスで definedというプロパティがあるとしますMyClassName
。この記事では、手動のメモリ管理を使用しています。
MyClassName.h
#import <UIKit/UIKit.h>
@interface MyClassName : NSObject {
@private
NSObject* myPropertyName;
@public
}
@property (nonatomic, retain) NSObject* myPropertyName;
// Some methods prototypes are here
@end
MyClassName.m
#import "MyClassName.h"
@implementation MyClassName
@synthesize myPropertyName;
// Some methods are here
@end
myPropertyName
宣言の場所、インスタンス変数との違いなどの使い方に戸惑います。たとえば、-(void)init
my class のカスタマイズされたメソッドなど、初期化コードのこれら 3 つのステートメントの違いは何ですかmyClassName
。
self.myPropertyName = [[[NSObject alloc] init] autorelease];
これはセッターを呼び出し
myPropertyName
ていますが、セッターで使用されているインスタンス変数の名前が何であるかはわかりmyPropertyName
ません. )?myPropertyName
_myPropertyName
myPropertyName = [[NSObject alloc] init];
これはプロパティのインスタンス変数を初期化します
myPropertyName
か? を持っていない場合@synthesize myPropertyName = _myPropertyName;
、プロパティのデフォルトのインスタンス変数は であると言われているため、間違っているでしょうか_myPropertyName
。_myPropertyName = [[NSObject alloc] init];
andを使用しても
_myPropertyName
、プロパティのインスタンス変数としてまだ宣言されていますか?myPropertyName
@synthesize myPropertyName;
@private NSObject* myPropertyName;
私の理解では、プロパティは単なる名前 ( などmyPropertyName
) であり、値の割り当てなど、コード内の実際の操作で使用されるようにカプセル化されたインスタンス変数が必要です。