@Dynamic的用法

时间:2012-12-21 06:49:34

标签: objective-c ios xcode ios6

请帮助我了解我们使用@property@synthesis的原因?我们需要使用@dynamic的地方? 谢谢。

3 个答案:

答案 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)

@propertyaccessors的声明。这只是一个宣言。这些之间几乎没有什么区别。 查看here