天天看點

iphone學習感悟

以下的文章可能不一定正确,如果大家發現了不正确的地方,還希望大家能夠指正,謝謝!!

在springboard下有一個函數,貌似可以點亮螢幕調用另外一個應用,不過沒有經過驗證,詳見網址 http://networkpx.googlecode.com/svn-history/r335/trunk/hk.kennytm.grip/src/GriPServer.m和http://iphonedevwiki.net/index.php/SpringBoard.app/MIG_subsystem

[SpringBoard applicationOpenURL:publicURLsOnly:]

@synthesize window=_window; 怎麼了解? 

我們在xocde中建立一個向導工程(比如基于視圖的工程),經常會看到有下面的語句

// .h

#import <UIKit/UIKit.h>

@class HelloWorldMailViewController;

@interface HelloWorldMailAppDelegate : NSObject <UIApplicationDelegate> {

}

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

@property (nonatomic, retain) IBOutlet HelloWorldMailViewController *viewController;

@end

// .m

// ...

@implementation HelloWorldMailAppDelegate

@synthesize window=_window;

@synthesize viewController=_viewController;

// ...

@end

在 32-bit 時,如果類的 @interface 部分沒有進行 ivar 聲明,但有 @property 聲明,在類的 @implementation 部分有響應的 @synthesize,則會得到類似下面的編譯錯誤:

Synthesized property 'xX' must either be named the same as a compatible ivar or must explicitly name an ivar

在 64-bit時,運作時系統會自動給類添加 ivar,添加的 ivar 以一個下劃線"_"做字首。

上面聲明部分的 @synthesize window=_window; 意思是說,window 屬性為 _window 執行個體變量合成通路器方法。

其實也就相當于以下的代碼

// .h

#import <UIKit/UIKit.h>

@class HelloWorldMailViewController;

@interface HelloWorldMailAppDelegate : NSObject <UIApplicationDelegate> {

UIWindow *window;

 HelloWorldMailViewController *viewController; 

}

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

@property (nonatomic, retain) IBOutlet HelloWorldMailViewController *viewController;

@end

// .m

// ...

@implementation HelloWorldMailAppDelegate

@synthesize window;

@synthesize viewController; 

// ...

@end

繼續閱讀