總結程序啟動的過程如下:
1. 程序入口main函數創建UIApplication實例和UIApplication代理實例。
2. 在UIApplication代理實例中重寫啟動方法,設置第一ViewController。
3. 在第一ViewController中添加控件,實現應用程序界面。
1.調用方法用[],繼承用:
2.實例對象
一、NSString* string1 = [NSString string]; //自動釋放
二、NSString* string2 = [[NSString alloc] init]; //用完後要手動釋放,alloc分配內存和實例化,init初始化
[string2 release] ;
3.創建對象
在Objective-C的語法中,一個類通常分為兩部分。h文件聲明,m文件實現。
方法都是public的,成員變量都是protect的,(方法前面用-減號,是public,+號即static方法)
protocol相當於java的接口
h文件,提供get,set訪問器:
#import@interface Photo : NSObject { NSString* caption; NSString* photographer; } @property (retain) NSString* caption; @property (retain) NSString* photographer; @end
m文件,@synthesize指令為我們主動生成了setter和getter,所以我們必須要做的就
只有實現dealloc方法了。
只有當訪問器不存在的時候,@synthesize才會自動生成訪問器,所以,即使是使
用@synthesize聲明了一個屬性,你仍然可以實現自定義的getter和setter。
#import Photo.h @implementation Photo @synthesize caption; @synthesize photographer; - (void) dealloc { [caption release]; [photographer release]; [super dealloc]; } @end
‐ (void) dealloc { self.caption = nil; self.photographer = nil; [super dealloc]; }
4.nil
相當於其他語言的null指針,不同在於在nil上調用方法不會導致異常
5.類目(Category)
類似於重寫(重點是 @implementation 跟 @interface 這 兩 行的括號)
#import@interface NSString (Utilities) - (BOOL) isURL; @end
注意import重寫的類+ 括號裡的名字
#import NSString-Utilities.h @implementation NSString (Utilities) - (BOOL) isURL { if ( [self hasPrefix:@http://] ) return YES; else return NO; } @end
通過在變量前增加IBOutlet來說明該變量將與界面上的某個UI對象對應,
在方法前增加IBAction來說明該方法將與界面上的事件對應.
7.異常(異常處理只有 Mac OS X 10.3 以上才支持)
@try{}
@catch{Exception *e}
@finally{}
8.id類型,不用知道上面類型,有此方法就響應,不用像java那樣必須轉換類型才能調用方法
9.迭代器NSEnumerator (NSArray不能改變長度,NSMutableArray可以)
NSDictionary相當於java的map
NSArray *array = [NSArray array ]; NSEnumerator *enumerator = [array objectEnumerator]; id obj; while ( obj = [enumerator nextObject] ) { printf( %s , [[obj description] cString] ); }