0

通常我们有这样的代码

@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 的默认属性成员是什么,在第二个版本中是 _window。那个 KVC 或 KVO 在里面工作吗?
4

1 回答 1

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 方法中释放它们

于 2011-05-03T03:47:00.967 回答