黑马程序员技术交流社区
标题:
OC对象和类
[打印本页]
作者:
非良人
时间:
2016-3-16 20:19
标题:
OC对象和类
1.类中的方法和函数很像,但是有区别的.相同点是,二者都是在调用的时候执行代码段,不同的是方法必须在声明之后才可以
被调用。且函数之间是相互独立的,而一个类中的方法同属于同个类的。
2.类和对象在内存中是怎样存储的。
内存的5大区域:
1)栈 局部常量,函数结束,立刻被收回。
2)堆 程序员手动申请的空间 ,不会收回,需要函数free(函数名)来结束。常用函数 int *p=malloc(字节数)。
3)BBS段 未初始化的全局变量 静态数据。
4)数据区(常量区) 5大区域中最大的区域。已初始化的全局变量,常量数据。
5)代码区 储存代码的。
3.在C语言中和OC语言中,字符串和指针的意义虽然一样,但是其表达的格式是不一样的。字符串都是用指针来表示的,且在
给指针初始化的方式也不一样。C语言中用NULL,OC中用nil, 表示指针不指向任何空间。NULL和nil本质上一样,都是宏
义,#define NULL(nil)(*void)0.
4.多个指针指向同一个对象:
HMpeople *p1=[HMpeople new],该语句的意义是,new在常量区创建了一个存储对象p1的空间,且将该空间的地址
返回给指正p1.那么可以将指针p1的值赋值给另外一个相同类型的指针(相同类的)p2,这样指针p1和p2都指向同一个对p1,
指针p1和p2都可以对对象p1进行操作。
说明:在OC语言中,对象的所有操作,都是通过地址传递(即地址操作)来完成的。
5.分组导航标记:
当文件太大,或代码太多的时候。为了方便我们去找到我们要查看的地方,我们可以给这些地方做上易识别的标记:
格式是:#pragram mark -标记名
6.多文件开发:
和函数中的多文件开发一样。将每一个类创建在不同的文件中,这样的目的是为了后期的维护以及更好的团队开发。操作
步骤是:
新建名字相同的.m和.h文件。类的声明放在.h文件当中,类的实现放在.m文件当中。在.h文件中引入foundation框架
#import<foundation/foundation.h>, .c文件中国引入#import"xx.h"即可。在main.m文件中也是直接引入xx.h.
在对象作为一个类的属性的时候,在不同的文件中,只要用#import来包含下一级的头文件xx.h即可。
7.对象的其他作用:
1)对象可以作为其他类中的一个对象方法的参数或是返回值。
对象作为其他方法中参数的时候,需要传入一个已经声明了的对象。而对象作为返回值是,是需要自己去创
建一个相应的对象,再用相同的类型指针去接收。这个指针就可以去改变值或去实现方法了!
2)对象可以作为其他类中的一个对象的属性。
不管对象是作为参数,返回值或是属性。一般都是两个不同的类中的对象。且对象在程序中操作都是通过其指针来进行
操作的,所以当对象作为另外一个对象方法的参数或是返回值得时候,都一个去什么一个相同类型的指针变量去接收它。
对象作为另外一个对象的属性的时候,这个时候对象并不存在,需要去创建一个对象,再去操作这个属性对象。步骤如下:
先通过指针p去指挥对象属性创建相对应的对象—————————>在通过创建好的对象去操作对象属性中的数据
HMPerson *p1 = [HMPerson new];
p1->dog = [HMDog new];
p1->_dog->_qq = [HMQuanQuan new];
p1->_dog->_qq->_color = @"土豪金";
p1->_dog->_qq->_size = 10.0f;
[p1->_dog->_qq bLingBLing];
作者:
爱尘iPhone
时间:
2016-3-16 21:21
这不是老王的吗?
作者:
泡泡鱼
时间:
2016-3-16 23:51
这不是老王的吗?
这不是老王的吗?
这不是老王的吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2