# Objective-C 簡介
在iOS的開發中使用的是Objective C語言,它是一中面向對象的語言,因而對于已經掌握面向對象語言知識的編程者來說是非常簡單的。
## 接口和實現
在Objective里完成的文件被稱為界面文件,該類文件的定義被稱為實現文件。
一個簡單的界面文件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] ;
```
## 方法(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的重要數據類型
| 數據類型 |
| --- |
| NSString 字符串 |
| CGfloat 浮點值的基本類型 |
| NSInteger 整型 |
| BOOL 布爾型 |
## 打印日志
NSLog用于打印一份聲明,它將打印在設備日志和調試版本的控制臺和分別調試模式上。
如 NSlog(@"");
## 控制結構
除了幾個增補的條款外,大多數的控制結構與C以及C++相同
**屬性(properties)**
用于訪問類的外部類的變量屬性
比如:@property(非原子、強)NSString*myString
**訪問屬性**
可以使用點運算符訪問屬性,若要訪問上一屬性可以執行以下操作
```
self.myString = @"Test";
```
還可以使用set的方法,如下所示:
```
[self setMyString:@"Test"];
```
**類別(categories)**
類用于將方法添加到現有類。通過這種方法可以將方法添加到類,甚至不用執行文件,就可以在其中定義實際的類。MyClass的樣本類別,如下所示:
```
@interace 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"]];
```