在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