Ios4 关于@property和@synthesis的问题

Ios4 关于@property和@synthesis的问题,ios4,properties,synthesizer,Ios4,Properties,Synthesizer,通常我们有这样的代码 @interface TestAppDelegate : NSObject <UIApplicationDelegate> { } @property (nonatomic, retain) IBOutlet UIWindow *window; @synthesize window; @接口TestAppDelegate:NSObject{ } @属性(非原子,保留)IBUIWindow*window; @合成窗口; 还有第二个版本 @interface

通常我们有这样的代码

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {

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

@synthesize window;
@接口TestAppDelegate:NSObject{
}
@属性(非原子,保留)IBUIWindow*window;
@合成窗口;
还有第二个版本

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

@synthesize window = _window;
@接口TestAppDelegate:NSObject{
UIWindow*\u窗口;
}
@属性(非原子,保留)IBUIWindow*window;
@合成窗口=_窗口;
问题是

  • 最大的区别是什么?哪个更好?为什么
  • 对于第一个版本,为什么window的默认属性成员是什么,在第二个版本中是\u window。KVC或KVO在内部工作吗

在默认实例中,它与

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

@synthesize window = window;
所以我知道它就在那里,(它们通常挨在一起都很好。)


我用保留的和不保留的分开它们。所以我知道用我的dealloc方法释放它们

是的,我知道。我想深入了解其中的一些细节。好吧,我的理解是,@property和@synthesis只是简写@属性是有关如何合成属性@的说明。观察家之类的人有点不同。我找到了这个,也许会有帮助。再次感谢。你能解释一下第一种情况吗(里面没有属性窗口声明),里面发生了什么?因为我们没有在里面声明实例成员“window”,所以如何调用set/get?也许更好的办法是给您提供一个获取更多信息的好地方。。。在ITunes U中,你可以搜索斯坦福iphone。。或者您也可以在此处查看有关酒店的视频
@interface TestAppDelegate : NSObject <UIApplicationDelegate> {
      UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;

@synthesize window;
UIWindow *window;