在Xcode 4,当你创建一个新的View-基础应用程序项目,这里是AppDelegate中的.H:iPhone - 苹果默认示例代码缺少一些变量?
#import <UIKit/UIKit.h>
@class TestAppleProjectViewController;
@interface TestAppleProjectAppDelegate : NSObject <UIApplicationDelegate> {
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestAppleProjectViewController *viewController;
@end
而且在.M一些项目:
@implementation TestAppleProjectAppDelegate
@synthesize window=_window;
@synthesize viewController=_viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
我可以看到属性,而无需瓦尔...
我可以看到与不中的类存在VAR名合成...
我可以看到调用这些属性....
但是......变量在哪里?
为什么这样的代码工作?
是否不再需要在班级中定义变量?属性够了吗?
呃......如果只是他们可能已经删除了编写默认合成线的需要...... – Oliver 2011-03-22 11:27:42
旧的行为不是一个“bug”,也不是与Xcode有什么关系---它是[遗留Objective-C运行时]的一个特性(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)。自动ivar生成是现代运行时的一项功能,仅适用于支持它的平台(iPhone和64位10.5+)。 – 2011-03-22 11:32:02
综合是不一样的!属性是让编译器知道有访问器的var。合成就是生成这些访问器。你可以使用@property而不使用@synthesize并为你自己写评估者。或者简单地声明合成:@synthesize窗口; – 2011-03-22 11:33:49