关于@property和@synthesize的问题

时间:2011-05-03 03:37:51

标签: ios4 properties synthesizer

通常我们有这样的代码

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {

}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window;

还有第二个版本

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *_window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window = _window;

队列

  
      
  • 有什么大不同?哪个更好?为什么?
  •   
  • 对于第一个版本,为什么窗口的默认属性成员是什么,在第二个版本中是_window。 KVC或KVO是否在内部工作?
  •   

1 个答案:

答案 0 :(得分:1)

在默认情况下,它与

相同
@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window = window;

实际上不需要在合成上进行分配。并且可能会产生错误。

这是我这样做的正常方式。

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window;

我明确声明了实例变量

UIWindow *window;

所以我知道它在那里,(它们通常都在彼此旁边。)

我将它们与我保留的那些以及我没有的那些分开。所以我知道在我的dealloc方法中释放它们