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.制作地址薄

 

posted @ 2022-01-28 23:40  周千  阅读(51)  评论(0编辑  收藏  举报