Objective-C 基礎知識


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的重要資料類型

序號資料類型
1NSString字串
2CGfloat 浮點值的基本型別
3NSInteger 整數
4BOOL 布林型

列印日誌

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");}

數組(arrays)

NSMutable和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"]];