8.继承
//在接口文件中通常这样指定根类 @interface Fraction:NSObject ... @end
类Fraction是从NSObject派生来的,因NSObject是层次结构的最顶端,因此称为根类。
9.多态、动态类型和动态绑定
多态:相同的名称,不同的类。
动态绑定和id类型:id可以用来存储属于任何类的对象。
编译时和运行时检查:编译时无法确定只能在运行时检查
id数据类型和静态类型
使用@try处理异常
10.变量和数据类型
变量的作用域,对象的初始化方法,数据类型。
//设置器和访问器 #import <Foundation/Foundation.h> /*接口部分*/ @interface Person : NSObject{ int myNumber;//实例变量 } - (void)print;//打印,返回为空 - (void)setMyNumber : (int) number;//设置器 - (void)myNumber : (int) number;//访问器 @end #import "Person.h" /*实现部分*/ @implementation Person - (void)print{ NSLog(@"Person number is :%d", myNumber);//打印值 } - (void)setMyNumber : (int) number{ myNumber = number; } - (int) myNumber : (int) number{ return myNumber;//获取myNumber值 } @end
11.分类和协议
使用分类以模块的方式向类添加方法,创建标准化方法列表供他人实现。
12.预处理程序
预处理程序语句使用#标记,这个符号必须是一行中的第一个非空格字符。
13.基本C语言特性
id类型是通用的指针类型
实例变量存储在结构中
对象变量实际上是指针
方法是函数,而消息表达式是函数调用。
14.Foundation框架
Foundation框架为所有的程序奠定基础,可允许一些基本对象,如数字,字符串,时间,日期,自动化的内存管理等。
15.数字、字符串集合
Foundation框架提供一些基本对象:数字,字符串,集合,数组,字典和集合形式使用的成组对象。
Foundation框架包括大量的类,方法,函数。在Mac OS X下,约有125个可用头文件,可通过
#import <Foundation/Foundation.h>
的简便形式进行导入,因为Foundation.h文件导入了Foundation所有的头文件,所有不用担心是否导入了正确
的头文件。XCode会自动将这个头文件插入程序。
预编译的头文件可以避免额外的开销。预编译的头文件是编译器预先处理过的文件。
16.使用文件
用Foundation框架可以对文件或目录执行基本操作,这些操作由管理文件和目录的NSFileManager类提供,这个类的
方法具有功能如下:
创建一个新文件
从现有文件中读取数据
将数据写入文件
重命名文件
删除文件
测试文件是否存在
确定文件的大小和其他属性
复制文件
测试两个文件的内容是否相同。
NSBundle提供了在应用中使用包(bundle)的方法,包括搜索包中的特定资源(如图片……
NSURL类的中URL方法可以从网上读取数据。
NSFileHandle类的方法可用于各种设备或套接字,可以实现的功能有:
打开一个文件,执行读,写或更新(读取和写入)操作。
在文件中查找指定位置。
从文件中读取特定数目的字节,或将指定数目的字节写入文件中。
17.内存管理和自动引用计数
自动垃圾收集
手工引用计数和自动释放池
自动引用计数(ARC)
18.复制对象
深复制:
浅复制:
19.归档
在OCK中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。通常,这个过程
包括将(多个)对象写入文件中,以便以后读取该对象。
两种归档数据的方法:属性列表,带键值的编码。
20.Cocoa和Cocoa Touch简介
Cocoa是一种为Mac OS X应用程序提供了丰富用户体验的框架,实际由三个框架组成:
Foundation框架
Core Date框架:便于数据库存储和管理数据
Application Kit(AppKit)框架:提供与窗口,按钮,列表等相关的类。
注:
Cocoa框架应用于Mac OS X桌面和笔记本电脑应用程序的开发,而Cocoa Touch框架应用
于ios设备上应用程序的开发。
Cocoa和Cocoa Touch都有Foundation和Core Data框架。但在Cocoa Touch下,UIKit代替了APPKit框架。
Cocoa Touch还提供了使用陀螺仪和加速器(与GPS和Wifi一样能跟踪位置)的类和触摸式界面。
21.编写IOS程序
//iPhone_1 ViewController.h import <UIKit/UIKit.h> @interface iPhone_1ViewController : UIViewController @property (strong, nonatomic) IBOutlet UILabel *display; -(IBAction) click1; @end //iPhone_1 ViewController.m @implementation iPhone_1ViewController @synthesize display; -(IBAction) click1{ display.text = @"1"; } //此处未显示Xcode插入的其他方法 //... @end 注:通过click1方法设置UILabel的text属性将出口变量display设为字符串"1".再将按钮的按下动作连接到这个 方法,它能执行预定的操作,将1放入iphone窗口显示。
iPhone分数计算器
//Fraction_CalculatorViewController.h接口文件 #import <UIKit/UIKit.h> #import "Calculator.h" @interface Fraction_CalculatorViewController : UIViewController @property (strong, nonatomic) IBOutlet UILabel *display; -(void) processDgit: (int) digit; -(void) processOp: (char) theOp; -(void) storeFracPart; //数字键 -(IBAction) clickDigit: (UIButton *) sender //算术操作键 -(IBAcion) clickPlus; -(IBAcion) clickMinus; -(IBAcion) clickMultiply; -(IBAcion) clickDivide; //Misc键 -(IBAcion) clickOver; -(IBAcion) clickEquals; -(IBAcion) clickClear; @end
//Fraction_CalculatorViewController.m #import "Fraction_CalculatorViewController.h" @implementation Fraction_CalculatorViewController{ char op; int currentNumber; BOOL firstOperand,isNumberator; Calculator *myCalculator; NSMutableString *displayString; } @synthesize display; -(void) viewDidLoad{ //覆盖应用程序载入的自定义方法 firstOperand = YES; isNumerator = YES; displayString = [NSMutableString stringWithCapacity:40]; myCalculator = [[Calculator alloc] init]; } -(void) processDigit:(int) digit{ currentNumber = currentNumber * 10 + digit; [displayString appendString:[NSString stringWithFormat:@"%i",digit]]; display.text = displayString; } -(IBAction) clickDigit:(UIButton *) sender{ int digit = sender.tag; [self processDigit:digit]; }
处理分数的Calculator类
//Calculator.h接口文件 #import <UIKit/UIKit.h> #import "Fraction.h" @interface Calculator : NSObject @property (strong, nonatomic) Fraction *operand1, *operand2, *accumulator; -(Fraction *) performOperation:(char) op; -(void) clear; @end //Calculator.m实现文件 #import "Calculator.h" @implementation Calculator @synthesize operand1, operand2, accumulator; -(id) init{ self = [super init]; if (self){ operand1 = [[Fraction alloc] init]; operand2 = [[Fraction alloc] init]; accumulator = [[Fraction alloc] init]; } return self; } -(void) clear{ accumulator.numerator = 0; accumulator.denominator = 0; } -(Fraction *)performOperation:(char) op{ Fraction *result; switch(op){ case '+':result = [operand1 add:operand2];break; case '-':result = [operand1 subtract:operand2];break; case '*':result = [operand1 multiply:operand2];break; case '/':result = [operand1 divide:operand2];break; } accumulator.numerator = result.numerator; accumulator.denominator = result.denominator; return accumulator; } @end
附录:
gcc是在Mac OS X上编译OC程序所用的标准编译器
gdb由gcc编译的程序的标准调试工具