IOS中的类

来源:互联网 发布:泰尔指数公式及其算法 编辑:程序博客网 时间:2024/06/05 20:08

OC中类

C语言中函数分为声明和实现,OC中定义一个类也分为实现和声明。@interface开始,@end结尾。
声明一个类的目的就是告诉系统,这个类中有哪些属性和方法;
OC类声明中属性只能写在@interface和@end的{}之间.
注意:在编写OC类属性的时候,建议将所有属性的名称前面加上_;

//类首字母必须大写@interface Iphone{    float _model;    int _cpu;    double _size;    int _color;}@end;

在OC中想要通过一个类来创建一个对象,必须给类发送一个消息(好比在C语言中调用方法一样)。
如何发送:在OC中只要想发送消息就先写上[类名/对象名 方法名]
继承自Object就有了new方法创建对象。
系统做的三件事:
1.为Iphone类创建处理的对象分配存储空间;
2.初始化Iphone类创建出来的对象属性;
3.返回Iphone类创建的对象对应的地址。

//通过一个Iphone类型的指针接收了Iphone对象的地址
如Iphone *p=[Iphone new];

//OC中的类本质是一个结构体,所以p这个指针其实就是指向一个结构体。
默认情况下OC中对象属性是不能访问的,protected的,加上@public。只要让类中属性公开,就可以通过指向结构体的指针来访问。

OC中的方法

OC中的方法,如果没有形参不需要写()。因为OC方法中的()有特殊的用途,OC方法中的()是用来扩住数据类型的。
1.确定函数名称;
2.确定形参;
3.确定返回值;
4.确定返回值类型

OC中方法如果有参数,那么每个参数的数据类型前面必须加上一个:冒号也是方法名称的一部分。

从第二个参数开始,为了提高阅读性,OC方法运行我们给每个参数添加一个标签来说明当前参数的意义。

类方法

对象方法

类的第0个属性并不是_age,而是isa;
isa就是创建这个对象实例的那个类对象;

类对象中存在着当前类中所有的方法。
发送消息调用方法的时候,isa指针

写在类声明的大括号的变量,我们称之为成员属性;
成员变量只能通过对象来访问。
成员变量不能离开类,离开类之后就不是成员变量,成员变量不能在定义的时候初始化;
存储:堆;
存储在堆中的数据,不会被自动释放,只能程序员手动释放。

OC类中的self

在类名中调用类方法,除了类名称之外,还可以使用self调用。

self不仅仅可以调用类方法,还可以调用对象方法。
如果self在对象方法中,那么self就代表调用当前对象方法的那个对象;
如果self在类方法中,那么

setter与getter方法:
setter方法:
作用:设置成员变量的值;
写法:setter方法一定是对象方法
一定没有返回值;
一定以set开头,并且set后面跟上需要设置的成员变量的名称去掉下划线,首字母大写
一定有参数,参数类型一定和需要设置的成员变量的类型一致,并且参数的名称就是成员变量 名称去掉下划线。

getter方法:
1.一定是对象方法;
2.一定有返回值,返回值类型与变量类型一致;
3.与java getter方法不同的是,不需要写getter
直接是成员变量名称去掉_

-(void)size{    return _size;} 

4.一定没有参数

在Xcode4.4之前,可以使用property来代替setter与getter方法的实现。也就是说写上@property就不用写getter与setter方法的声明。
@property是编译器指令;

@property age;那么setter是setAge,getter方法就是age;
如果是@property int _age,那么setter就是set_age,getter是_age

@synthesize是一个编译器指令,它可以简化我们getter与setter方法的实现

@synthesize age;
//但是必须要有属性来接收
因此需要写成
@synthesize age=_age;
代表着把赋值的age给_age;

需要将传入的值赋值给谁和返回谁的值给调用者。
//-(void)setAge:(int)age{

}

-(int)age{

}