Objective C 基礎知識
在iOS的開發中使用的是Objective C語言,它是一種面向物件的語言,因而對於已經掌握面嚮物件語言知識的程式設計者來說是非常簡單的。
介面和實現
在Objective裡完成的檔案被稱為介面檔案,該類檔案的定義被稱為實現檔案。
一個簡單的介面檔案MyClass.h將如圖所示:
@interface MyClass:NSObject{ // 類變數宣告 } // 類屬性宣告 // 類方法和宣告 @end
執行MyClass.m檔案,如下所示
@implementation MyClass // 類方法定義 @end
建立物件
完成建立物件,如下所示
MyClass *objectName = [[MyClass alloc]init] ;
方法(methods)
Objective C中宣告的方法如下所示:
-(returnType)methodName:(typeName) variable1 :(typeName)variable2;
下面顯示了一個示例:
-(void)calculateAreaForRectangleWithLength:(CGfloat)length andBreadth:(CGfloat)breadth;
你可能會想什麼是andBreadth字串,其實它的可選字串可以幫助我們閱讀和理解方法,尤其是當方法被呼叫的時候。
在同一類中呼叫此方法,我們使用下面的語句。
[self calculateAreaForRectangleWithLength:30 andBreadth:20];
正如上文所說的andBreath使用有助於我們理解breath是20。Self用來指定它是一個類的方法。
類方法(class methods)直接而無需建立的物件,可以訪問類方法。他們沒有任何變數和它關聯的物件。示例如下:
+(void)simpleClassMethod;
它可以通過使用類名(假設作為MyClass類名稱)訪問,如下所示:
[MyClass simpleClassMethod];例項方法
可以建立的類的物件後只訪問例項方法,記憶體分配到的例項變數。例項方法如下所示:
-(void)simpleInstanceMethod;
建立類的物件後,它可以訪問它。如下所示:
MyClass *objectName = [[MyClass alloc]init] ; [objectName simpleInstanceMethod];
Objective C的重要資料型別
序號 | 資料型別 |
---|---|
1 | NSString字串 |
2 | CGfloat 浮點值的基本型別 |
3 | NSInteger 整型 |
4 | BOOL 布林型 |
列印日誌
NSLog用於列印一份宣告,它將列印在裝置日誌和除錯版本的控制檯和分別除錯模式上。
如 NSlog(@"");
控制結構
除了幾個增補的條款外,大多數的控制結構與C以及C++相同
屬性(properties)
用於訪問類的外部類的變數屬性
比如:@property(非原子、強)NSString*myString
訪問屬性
可以使用點運算子訪問屬性,若要訪問上一屬性可以執行以下操作
self.myString = @"Test";
還可以使用set的方法,如下所示:
[self setMyString:@"Test"];
類別(categories)
類用於將方法新增到現有類。通過這種方法可以將方法新增到類,甚至不用執行檔案,就可以在其中定義實際的類。MyClass的樣本類別,如下所示:
@interface MyClass(customAdditions) - (void)sampleCategoryMethod; @end @implementation MyClass(categoryAdditions) -(void)sampleCategoryMethod{ NSLog(@"Just a test category"); }
陣列
NSMutableArray 和 NSArray 是 ObjectiveC 中使用的陣列類,前者是可變陣列,後者是不可變陣列。如下:
NSMutableArray *aMutableArray = [[NSMutableArray alloc]init]; [anArray addObject:@"firstobject"]; NSArray *aImmutableArray = [[NSArray alloc] initWithObjects:@"firstObject",nil];
詞典
NSMutableDictionary和NSDictionary是Objective中使用的字典,前者可變詞典,後者不可變詞典,如下所示:
NSMutableDictionary*aMutableDictionary = [[NSMutableArray alloc]init]; [aMutableDictionary setObject:@"firstobject" forKey:@"aKey"]; NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects: @"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];