Objective-c学习笔记
一、Ojective-c
创建对象涉及到一下注解
@interface
@implementation
前一个注解定义的是要实现的行为
后一个注解是实现interface定义的行为
1.1在Objective-c中总共有4个基本数据类型,分别是int、float、double、char
1.2限定词
限定值有:long、long long、short、unsigned及signed。
把限定值放在基本数据变量前面,就可以增加或缩短基本数据的范围。
long int 表示大范围的int型数据
long long int表示更大范围的int型数据
short int一般表示取值较小数,主要是为了节约空间
unsigned int限定只能是正数,反之signed为负数
1.3id类型
id类型可以存储任何类型的对象,它是多态和动态绑定的基础
1.4、@property、@synthesize注解
自动生成get、set方法:在@interface部分设置@property或在@implement部分设置@synthesize
1.5点运算符
例如:instance.property
1.6具有多个参数的方法
-(void) setTo:(int) n over:(int) d;
使用的时候:
[instance setTo: 1 over: 3]
不带参数名的方法
-(void) set:(int) n (int) d;
使用的时候:
[instance set:1:3]
1.7self关键字
self有点类似于java中的this.a = a
使用方法是在类方法中:
[self a]
1.8在方法中分配和返回对象
1.9@class指令
该指令和#implement 的作用有些相似,不过@class引入只能引入类名,不能引入方法名
2.0具有对象的类
也就是java中的属性对象
二、多态、动态类型和动态绑定
2.1多态:相同的方法名,不同的类
[instance print] 这个表示是发送一条消息要执行print方法,而怎么区分要调用的是那个print,就通过instance来区分了。
2.2动态绑定和id类型
id数据类型是一种通用的数据类型
id数据类型使用起来没有星号,使用方法如下:
Id dataValue;
2.3编译时和运行时检查
id类型在编译时无法检查,所以会在运行时进行检查,id类型的对象不能用点运算符。
2.4动态类型的参数和返回类型的参数
2.5有关类的问题
2.6使用@try处理异常
使用方式如下:
@try{
}
@catch(NSException *e){
}
三、变量和数据类型
3.1对象的初始化
Fraction *myFraction = [[Fraction alloc] init];
这里调用的是Fraction init的是父类NSObject的init不需要重写init方法。
初始化对象和初始化值通常会合并到一个方法中。
3.2作用域的回顾
1.关于属性、存取方法和实例变量
目前的趋势是使用下画线作为实例变量名字的起始字符。
2.全局变量
int gMoreNumber = 0;
上面的代码表示任何位置都可以引用这个变量的值。这样定义也可以让其他文件访问该变量的值。
例如:
#import ..
int gMoreNumber = 10
其他文件
-(void) print:(int) var{
extern int gMoreNumber;
gMoreNumber = var;
}
3.静态变量
static int gMoreNumber
文件在该语句的后面的方法和类都能使用该变量。
+(void) test{} //静态方法
3.3枚举数据类型
enum flag {false,true}
理论上flag只能是false或true,但是是其他值也不会发出警告。
声明一个enum flag变量如下:
enum flag endofData,matchFound
变量endofData和matchFound只能是false、true
如果希望每个枚举标识符有一个初始值:
enum direction {up = 1,down, = 2left = 10,right = 9};
3.4typedef语句
允许编程者为数据类型另外指派一个名称
typedef int Counter;
typedef 类型名 新类型名;
定义变量:新类型名 变量名;
3.5数据类型转换
显示控制转换
int a = 9;
int b = 3
int result;
result = (float)a/b;
1.转换规则
转换运算符优先级较高,当一个操作数转变成另一个类型,其他一个或多个操作数自动转换成flaot类型,计算结果也是这个类型。
f*i + (float)l/s
计算结果也为float
3.6位操作符
四、分类和协议
4.1分类
即时接口部分的定义,也是现有接口的部分扩展。
例如:
import "Fraction.h"
@interface Fraction (MathOps)
-(Fraction *) add:(Fraction *) f;
-(Fraction *) mul:(Fraction *) f;
-(Fraction *) sub:(Fraction *) f;
-(Fraction *) div:(Fraction *) f;
@end
4.2类的扩展
五、Founddation框架
框架是由类、方法、函数和文档按照一定的逻辑组织起来的集合。
5.1 Foundation文档
六、数字、字符串和集合
基本数据类型不是对象,所以不能发送消息。
NSNumber
6.1字符串对象
NSString
2.description方法
返回格式化的字符串
3可变对象和不可变对象
不可变:NSString
可变:NSMutableString
6.3数组对象
不可变数组NSArray,可变数组NSMutableArray
1.制作地址薄