Използване на @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 ще генерира getter и setter методи за вашата собственост. @dynamic просто казва на компилатора, че методите getter и setter се изпълняват не от самия клас, а някъде другаде

person Sumanth    schedule 21.12.2012
comment
да всички тези неща знам. къде трябва да използваме това? и къде не ни трябват? - person SARANGA; 21.12.2012

@property и @synthesis работят заедно, това ви помага да дефинирате сетер и гетер автоматично. В xcode 4.5 @synthesis не се изисква, компилаторът го добавя автоматично.

person TieDad    schedule 21.12.2012