假设我在我的类中有一个名为myPropertyName
defined的属性MyClassName
。这篇文章中使用了手动内存管理。
我的类名.h
#import <UIKit/UIKit.h>
@interface MyClassName : NSObject {
@private
NSObject* myPropertyName;
@public
}
@property (nonatomic, retain) NSObject* myPropertyName;
// Some methods prototypes are here
@end
我的类名.m
#import "MyClassName.h"
@implementation MyClassName
@synthesize myPropertyName;
// Some methods are here
@end
我对myPropertyName
声明的位置,实例变量之间的区别等用法感到困惑。比如这三个初始化代码语句有什么区别,比如-(void)init
我的类的自定义方法myClassName
。
self.myPropertyName = [[[NSObject alloc] init] autorelease];
这个正在调用
myPropertyName
setter,但我不确定 setter 中使用的实例变量的名称是什么,myPropertyName
(因为我已经声明了一个名为 @private 的字段myPropertyName
)或_myPropertyName
(人们说这个带有下划线的是默认值)?myPropertyName = [[NSObject alloc] init];
myPropertyName
这会初始化属性的实例变量吗?如果我没有@synthesize myPropertyName = _myPropertyName;
,那会不会是错误的,因为据说该属性的默认实例变量是_myPropertyName
._myPropertyName = [[NSObject alloc] init];
即使我使用and仍被
_myPropertyName
声明为我的属性的实例变量?myPropertyName
@synthesize myPropertyName;
@private NSObject* myPropertyName;
在我的理解中,属性只是一个名字(比如myPropertyName
),应该有一些实例变量被封装在代码中的实际操作中使用,比如赋值。