黑马程序员技术交流社区

标题: 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