2012-04-03 10 views
4

Nachdem ich einige Tutorials online gelesen habe, habe ich 2 verschiedene Möglichkeiten gesehen, Eigenschaften zu deklarieren. ich mich, wenn ein richtiges ist als die andere:ios AppDelegate Eigenschaftsdeklarationen

Option 1:

#import <UIKit/UIKit.h> 

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

@end 

Option 2:

#import <UIKit/UIKit.h> 

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

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

@end 

Antwort

2

Die erste Option verwendet Automatische Referenzzählung (ARC); der zweite nicht. Keiner ist "korrekter" als der andere - der erste ist einfach moderner. Sie sollten ARC verwenden, es sei denn, Sie haben starke Gründe, dies nicht zu tun (z. B. weil Legacy-Code auf Legacy-Plattformen unterstützt werden muss).

Hier ist eine link, um mehr über ARC zu erfahren.

1

Option 1 hat ARC aktiviert. Seit iOS5 SDK ist es die Standardoption in Xcode.

starke bedeutet, dass die View-Controller diese Variable

verwalten wird, ist hier ein gutes ARC tutorial für iOS5.

Bei Option 2 ist Automatic Reference Counting deaktiviert. der View-Controller wird behalten (die Zählung beibehalten erhöhen), wenn die Variable gesetzt ist

0

Es wird verwendet, notwendig zu sein, um explizit eine Instanz Variable zu deklarieren jede Eigenschaft zurück. Mit der "modernen" Laufzeit, die nicht mehr benötigt wird, kümmert sich Ihre @ synthesize-Direktive für die Eigenschaft um die Erstellung des iVar, falls noch nicht vorhanden. Manche Leute behalten immer noch die Ivar-Deklaration, entweder aus Vorliebe oder nur aus Gewohnheit, und natürlich werden Sie die in älteren Code deklarierten Ivars sehen. Ein Vorteil dabei ist, dass Sie die Werte Ihrer Eigenschaften im Debugger einfacher sehen können.

Der Unterschied zwischen der Verwendung von strong und retain ist eine Frage der Verwendung von ARC bzw. nicht.