2012-12-21 52 views
-4

請幫我瞭解我們爲什麼使用@property@synthesis?我們需要使用@dynamic? 謝謝。@Dynamic的用法

+1

查看https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html – iDev

回答

0

@propertyaccessors聲明的編譯器。這只是一個聲明。這些差別很小。 支票here

0

@property和@synthesis一起工作,它可以幫助你自動定義setter和getter。在xcode 4.5中,@synthesis不是必需的,編譯器會自動添加它。

0

屬性

當我們寫了標題和作者更早的存取方法,你可能已經注意到了,代碼很簡單,而且很可能被推廣。

屬性是Objective-C中的一個特性,它允許我們自動生成訪問器,並且還具有其他一些優點。讓我們將Photo類轉換爲使用屬性。

下面是它看起來像以前一樣:

@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指令自動生成getter和setter方法對我們來說,所以我們必須實現這個類是dealloc方法。

@synthesize將爲您的財產生成getter和setter方法。 @dynamic只是告訴了getter和setter方法是由類本身不實現,但在其他地方

+0

yah。這些我知道的所有事情。我們應該在哪裏使用?和我們不需要的地方? – SARANGA