假设我在我的类中有一个名为myPropertyNamedefined的属性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];这个正在调用
myPropertyNamesetter,但我不确定 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),应该有一些实例变量被封装在代码中的实际操作中使用,比如赋值。