假设我有一个属性myPropertyName
,在我的类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
声明,它的实例变量之间的差异的地方。例如,这三个初始化代码声明之间有什么区别,例如,在我的类myClassName
的定制-(void)init
方法中。
self.myPropertyName = [[[NSObject alloc] init] autorelease];
这一个呼唤
myPropertyName
二传手,但我不知道什么是实例变量存在的二传手使用的名称,myPropertyName
(因为我已经宣布@private场命名为myPropertyName
)或_myPropertyName
(人们说这个带有underbar的是默认的)?myPropertyName = [[NSObject alloc] init];
这是否初始化
myPropertyName
属性的实例变量?如果我没有@synthesize myPropertyName = _myPropertyName;
,那么它是错误的,因为该属性的默认实例变量被称为_myPropertyName
。_myPropertyName = [[NSObject alloc] init];
是
_myPropertyName
还宣布为我的财产的实例变量myPropertyName
即使我使用@synthesize myPropertyName;
和@private NSObject* myPropertyName;
?
在我的理解,物业只是一个名称(如myPropertyName
),应该有封装在代码中的实际操作,如分配值所使用的一些实例变量。
你不必再'@ synthesize'。关于什么似乎是你真正的问题,你可以有一个'@财产'没有相应的'伊娃'。 – nhgrif