總結程序啟動的過程如下:
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] );
}