# 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"]];
```