请帮助我了解我们使用@property
和@synthesis
的原因?我们需要使用@dynamic
的地方?
谢谢。
答案 0 :(得分:1)
属性
当我们之前为caption和author编写了访问器方法时,您可能已经注意到代码很简单,并且可能是一般化的。
属性是Objective-C中的一项功能,它允许我们自动生成访问器,还有一些其他的附带好处。让我们将Photo类转换为使用属性。
以下是它的样子: #import
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
- (NSString*) caption;
- (NSString*) photographer;
- (void) setCaption: (NSString*)input;
- (void) setPhotographer: (NSString*)input;
@end
以下是转换为属性后的样子:
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject {
NSString* caption;
NSString* photographer;
}
@property (retain) NSString* caption;
@property (retain) NSString* photographer;
@end
@property是一个Objective-C指令,用于声明属性。括号中的“保留”指定setter应保留输入值,而行的其余部分仅指定属性的类型和名称。
现在让我们来看看该类的实现:
#import "Photo.h"
@implementation Photo
@synthesize caption;
@synthesize photographer;
- (void) dealloc
{
[caption release];
[photographer release];
[super dealloc];
}
@end
@synthesize指令自动为我们生成setter和getter,所以我们必须为这个类实现的是dealloc方法。
@synthesize将为您的属性生成getter和setter方法。 @dynamic告诉编译器getter和setter方法不是由类本身实现的,而是在其他地方实现的
答案 1 :(得分:0)
@property和@synthesis一起工作,它可以帮助您自动定义setter和getter。在xcode 4.5中,不需要@synthesis,编译器会自动添加它。
答案 2 :(得分:0)
@property
是accessors
的声明。这只是一个宣言。这些之间几乎没有什么区别。
查看here