2012-04-03 68 views
4

在閱讀了一些在線教程之後,我看到了2種不同的聲明屬性的方法。 我想知道如果一個比另一個更正確:ios AppDelegate屬性聲明

選項1:

#import <UIKit/UIKit.h> 

@interface AppDelegate : NSObject 
@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) UITabBarController *mytabs; 

@end 

選項2:

#import <UIKit/UIKit.h> 

@interface AppDelegate : NSObject { 
UIWindow *window; 
UITabBarController *mytabs; 
} 

@property (nonatomic, retain) UIWindow *window; 
@property (nonatomic, retain) UITabBarController *mytabs; 

@end 

回答

2

第一選項使用自動引用計數(ARC);第二個不是。沒有一個比另一個「更正確」 - 第一個只是更現代。您應該使用ARC,除非您有充分的理由不要(例如,因爲需要在傳統平臺上支持遺留代碼)。

這是一個link瞭解更多關於ARC。

1

選項1已啓用ARC。由於iOS5 SDK是Xcode中的默認選項。

意味着視圖控制器將管理這個變量

這裏是iOS5的一個很好的ARC tutorial

選項2禁用了自動引用計數。 視圖控制器將保留(增加保留計數)當變量被設置

0

它曾經是必要明確聲明一個實例變量來支持的每個屬性。使用「現代」運行時,不再需要 - 您的屬性的@synthesize指令將負責創建iVar(如果尚不存在)。有些人仍然保持伊娃的聲明,無論是偏好還是隻是習慣,當然你會看到在舊代碼中聲明的伊娃。這樣做的一個好處是,您可以更輕鬆地在調試器中查看屬性的值。

使用strongretain之間的區別是分別使用ARC還是不使用ARC。