OC中类与对象的使用介绍

 

1 类如何生成:拥有相同(类似)属性和行为的对象都可以抽象出一个类。类只是一张对象的设计图。

2   设计类的有几部分

(1) 类名(书写规范)

类名的第一个字母必须是大写

不能有下划线

多个英文单词,用驼峰表示

(2)属性

(3)行为:哪个对象对行为最清楚,就把行为写到哪个对象中去。

3  OC中类的书写格式

(1)在OC中,想执行一些行为,就写上一个中括号[行为执行者   行为名称];

(2)利用类来创建对象。

(3):NSObject 目的是:让继承它的类具备创建对象的能力。

(4)#import<Foundation/Foundation.h>  目的是:NSObject在Foundation框架中的Foundation.h文件中进行了声明。

(5)类中的成员变量默认的会被初始化为0;

4 OC中类与对象深入剖析

(1)OC中只能用指针来间接操纵对象

(2)[类名  new]会创建出一个新对象,并且会返回新对象本身(新对象的地址)每次new创建 都返回新地址。

(3)错误提示中常见“instance variable”意思是实例变量,即类定义的成员变量。

(4)因为类中的成员变量(实例变量)是默认为protected的,所以想在外部用对象指针访问成员变量的方法之一就是在实例变量声明的前面加@public

(5)方法(行为)三要素:方法名、参数、返回值(声明、实现)。注意:方法与函数是不同的,函数指在外部建立的操作块。方法仅仅指OC类的成员行为。

(6)OC方法中任何数据类型都必须用小括号()扩住,OC方法中的小括号就有一个作用:扩住数据类型。

(7)对象与类的内存分析:每次用[类  new]创建对象时还要给类分配存储空间。也就是说在使用类创建对象之前,会将类加载进内存,且只加载一次。类中放置的是方法列表。每个对象内部默认都有一个isa指针。且每个isa指针都指向加载进内存的自己所属的类。给对象发送消息的流程如下:假设有一个Person类,生成p1对象即Person *p1=[Person new];  已知类只会加载一次里面存储的是类的方法列表。里面有可以访问类的实例变量的方法。当类被加载进内存之后,在利用这个类创建对象时会把加载进来的这个类所在内存的地址即isa放置到它所创建的对象内,(它所创建的所有对象都有相同的isa指针且都指向它)。当给一个对象发送消息时,这个对象便会利用isa指针找到类的相应方法。

(8)OC中的对象是不会自动回收的,除非手动释放它。当出{}之后,指向这个对象的指针是个栈变量会被自动回收,但它所指向的对象仍在内存之中。未被释放的对象直至main函数执行完毕才能自动被回收。就是说,在程序执行结束时所有未被释放的对象都会被系统自动回收。

5、常见错误:

(1)@interface类声明部分和@implementation类实现部分是不能嵌套的。

(2)@interface类声明部分是不能有类方法的实现的。这与C++不同。

(3)@interface类声明部分的{}内声明实例变量时,是不允许赋初值的,且不允许在内部声明实例(即成员)变量时加上c语言的类型如static等类型的。

(4)在一个main.m文件中,类的实现可以放在main函数后面,但是类的声明是必须放在main函数前面的。




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013087513/article/details/47678919
个人分类: Objective—C
上一篇OC的Runtime(运行时)机制的解析
下一篇OC中方法与函数的区别以及类的合理设计
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭