一. objective-c简介

Objective-Objective-C是C语言的严格超集--任何C语言程序不经批改就能够间接通过Objective-C编译器,在Objective-C中应用C语言代码也是齐全非法的。Objective-C被形容为盖在C语言上的薄薄一层,因为Objective-C的原意就是在C语言主体上退出面向对象的个性。
扩展名内容类型
.h头文件。头文件蕴含类,类型,函数和常数的申明。蕴含头文件时,#import 选项和 #include 选项完全相同,只是它能够确保雷同的文件只会被蕴含一次。
.m源代码文件。这是典型的源代码文件扩展名,能够蕴含 Objective-C 和 C 代码。
.mm源代码文件。带有这种扩展名的源代码文件,除了能够蕴含Objective-C和C代码以外还能够蕴含C++代码。仅在你的Objective-C代码中的确须要应用C++类或者个性的时候才用这种扩展名。

二. 语法

1. 字符串
大多数Objective-C通常不应用C语言格调的字符串。反之,大多数框架把字符串传递给NSString对象。NSString类提供了字符串的类包装,蕴含了所有你冀望的长处,包含对保留任意长度字符串的内建内存管理机制,反对Unicode,printf格调的格式化工具
NSString* myString = @"My Stringn"; NSString* anotherString = [NSString stringWithFormat:@"%d %s", 1, @"String"];
2. 类
Objective-C 的类规格阐明蕴含了两个局部:定义(interface)与实现(implementation)。定义(interface)局部蕴含了类申明和实例变量的定义,以及类相干的办法。实现(implementation)局部蕴含了类办法的理论代码。
  • interface

    定义局部,分明定义了类的名称、数据成员和办法。 以关键字@interface作为开始,@end作为完结
    @interface MyObject : NSObject {     int memberVar1; // 实体变量     id  memberVar2; } +(return_type) class_method; // 类办法 -(return_type) instance_method1; // 实例办法 -(return_type) instance_method2: (int) p1; -(return_type) instance_method3: (int) p1 andPar: (int) p2; @end//办法后面的 +/- 号代表函数的类型:加号(+)代表类办法(class method),不须要实例就能够调用,与C++ 的动态函数(static member function)类似。减号(-)即是个别的实例办法(instance method)。
    //Objective-C定义一个新的办法时,名称内的冒号(:)代表参数传递,不同于C语言以数学函数的括号来传递参数。Objective-C办法使得参数能够夹杂于名称两头,不用全副附缀于办法名称的尾端,能够进步程序可读性。设定色彩RGB值的办法为例: - (void) setColorToRed: (float)red Green: (float)green Blue:(float)blue; /* 宣告办法*/ [myColor setColorToRed: 1.0 Green: 0.8 Blue: 0.2]; /* 呼叫办法*///这个办法的签名是setColorToRed:Green:Blue:。每个冒号前面都带着一个float类别的参数,别离代表红,绿,蓝三色。
  • Implementation

    实现区块则蕴含了公开办法的实现,以及定义公有(private)变量及办法。 以关键字@implementation作为区块起头,@end结尾。
    @implementation MyObject {  int memberVar3; //公有實體變數}+(return_type) class_method {    ... //method implementation}-(return_type) instance_method1 {    ...}-(return_type) instance_method2: (int) p1 {    ...}-(return_type) instance_method3: (int) p1 andPar: (int) p2 {    ...}@end
  • 创建对象

    Objective-C创建对象需通过alloc以及init两个音讯。alloc的作用是分配内存,init则是初始化对象。
    MyObject * my = [[MyObject alloc] init];MyObject * my = [MyObject new];