iOS - Objective-C基礎


簡介

iOS開發中使用的語言是objective C.它是一種物件導向的語言,因此有物件導向語言程式設計的一些背景會很容易理解。 

介面和實現

在Objective-C類的宣告檔案被稱為介面檔案和檔案定義類被稱為實現檔案。

類似於下面的一個簡單的介面檔案MyClass.h

@interace MyClass:NSObject{ 
// class variable declared here
}
// class properties declared here
// class methods and instance methods declared here
@end

實現檔案 MyClass.m 如下

@implementation MyClass
// class methods defined here
@end

物件建立

物件的建立完成如下

MyClass  *objectName = [[MyClass alloc]init] ;

方法

Objective-C的方法中宣告如下

-(returnType)methodName:(typeName) variable1 :(typeName)variable2;

一個例子如下所示

-(void)calculateAreaForRectangleWithLength:(CGfloat)length 
andBreadth:(CGfloat)breadth;

可能想知道什麼是andBreadth字串,實際上這有助於我們閱讀和理解方法,特別是在呼叫的時候,其可選的字串。要在同一類中呼叫此方法,我們使用下面的語句

[self calculateAreaForRectangleWithLength:30 andBreadth:20];

正如上面所說的使用andBreadth有助於我們理解,breath 是20。self 用於指定它是一個類方法。

類方法

類方法可以直接存取,而無需建立類的物件。他們沒有任何與它相關聯的變數和物件。例子如下所示。

+(void)simpleClassMethod;

它可以存取使用類名(我們假設MyClass作為類名)如下。

[MyClass simpleClassMethod];

範例訪求

範例方法可以存取後,才建立的類的物件。範例變數分配記憶體。的一個例子的範例方法如下所示。

-(void)simpleInstanceMethod; 

它可以存取如下的類建立物件後,

MyClass  *objectName = [[MyClass alloc]init] ;
[objectName simpleInstanceMethod];

Objective-C重要資料型別

S.N. 資料型別
1 NSString
It is used for representing a string
2 CGfloat 
It is used for representing a floating yiibai value (normal float is also allowed but it's better to use CGfloat)
3 NSInteger 
It is used for representing integer
4 BOOL 
used for representing Boolean(YES or NO are BOOL types allowed )

列印紀錄檔

NSLog - 使用列印一份宣告。這將是列印的裝置的紀錄檔和偵錯控制台釋放和偵錯模式。

Eg: NSlog(@"");

控制結構

大多數的控制結構中的相同,C和C ++除了在宣告中新增了一些像。

屬性

使用一個外部類存取類變數屬性

Eg: @property(nonatomic , strong) NSString *myString;

存取屬性

可以使用點運算子來存取屬性。存取上述物業,我們將做到以下幾點。

self.myString = @"Test";

也可以使用設定方法如下。

[self setMyString:@"Test"];

部類

類別將方法新增到現有的類。通過這種方式,我們可以新增類的方法,而我們甚至沒有實施實際的類定義檔案。我們的類是一個樣本類別如下。

@interace MyClass(customAdditions)
- (void)sampleCategoryMethod;
@end

@implementation MyClass(categoryAdditions)

-(void)sampleCategoryMethod{
   NSLog(@"Just a test category");
}

陣列

NSMutableArray和NSArray是Objective-C中的陣列類。顧名思義,前者是可變的,後者是不可改變的。一個例子如下所示:

NSMutableArray *aMutableArray = [[NSMutableArray alloc]init];
[anArray addObject:@"firstobject"];
NSArray *aImmutableArray = [[NSArray alloc]
initWithObjects:@"firstObject",nil];

字典

NSMutableDictionary和NSDictionary是字典使用Objective-C類。顧名思義,前者是可變的,後者是不可改變的。例子如下所示:

NSMutableDictionary*aMutableDictionary = [[NSMutableArray alloc]init];
[aMutableDictionary setObject:@"firstobject" forKey:@"aKey"];
NSDictionary*aImmutableDictionary= [[NSDictionary alloc]initWithObjects:[NSArray arrayWithObjects:
@"firstObject",nil] forKeys:[ NSArray arrayWithObjects:@"aKey"]];