Использование @Dynamic

пожалуйста, помогите мне узнать, почему мы используем @property и @synthesis? Где нам нужно использовать @dynamic? Спасибо.


person SARANGA    schedule 21.12.2012    source источник
comment
Проверьте developer.apple.com/library/ mac/#documentation/Cocoa/Conceptual/   -  person iDev    schedule 21.12.2012


Ответы (3)


@property является объявлением accessors. Это просто декларация. Между ними очень небольшая разница. Проверьте здесь

person Girish    schedule 21.12.2012

Характеристики

Когда мы ранее писали методы доступа для подписи и автора, вы могли заметить, что код прост и, вероятно, может быть обобщен.

Свойства — это функция в 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, которая объявляет свойство. «Сохранить» в скобках указывает, что установщик должен сохранить входное значение, а остальная часть строки просто указывает тип и имя свойства.

Теперь давайте посмотрим на реализацию класса:

#import "Photo.h"

@implementation Photo

@synthesize caption;
@synthesize photographer;

- (void) dealloc
{
    [caption release];
   [photographer release];
[super dealloc];
}

@end

Директива @synthesize автоматически генерирует для нас сеттеры и геттеры, поэтому все, что нам нужно реализовать для этого класса, — это метод Dealloc.

@synthesize создаст методы получения и установки для вашего свойства. @dynamic просто сообщает компилятору, что методы получения и установки реализованы не самим классом, а где-то еще

person Sumanth    schedule 21.12.2012
comment
да. это все, что я знаю. где мы должны использовать это? а где нам не надо? - person SARANGA; 21.12.2012

@property и @synchronous работают вместе, это помогает вам автоматически определить сеттер и геттер. В xcode 4.5 @синтез не требуется, компилятор автоматически добавляет его.

person TieDad    schedule 21.12.2012