黑马程序员技术交流社区

标题: 学习笔记17:OC基础(4) [打印本页]

作者: 新生heima    时间: 2015-8-17 23:49
标题: 学习笔记17:OC基础(4)

引入类方法可以减少内存的占用,因为只是使用对象方法的话,在调用函数时,必要首先创建对象,这会占用内存堆区的一部分空间。但是如果用类名直接引用方法,就会节省这块空间。


声明:
[img=http://img.bbs.csdn.net/upload/201508/17/1439799637_344063.png][/img]

调用格式:【类名   方法名】

类方法的声明和对象方法可以,同名,因为她们的方法类别不一样。不会造成混乱。

类方法使用注意事项:

1)类方法可以和对象方法同名
2)类方法可以从子类继承,子类可以重写类方法,
3)类方法和对象方法一样需要声明和实现
4)类方法只能通过类发送类方法消息才能被执行,对象是不能调用的
5)在类方法中使用了self,这个self执行的类对象class object 而不是实例对象instance object

类方法的优点:
1)节省内存空间
2)提高效率
3)作为工具方法(统计一个字符串有多少字符)

类方法易犯错误
1)在类方法中使用了类的成员变量
2)类方法是不能访问实例变量,实例变量只能由实例对象访问


对象方法和类方法的比较
1)对象方法
以- 号开头
可以使用成员变量
用对象调用对象方法
对象方法可以调用当前对象或其他对象的方法
    (1)在对象方法中创建一个对象
    (2)将调用的对象作为参数传递过来
      (3)可以使用self  【self   对象方法】

在类方法中调用其他类的类方法
(1)可以直接使用本类类名或者其他类名
(2)可以使用self  【self   类方法】

2)类方法
以+号开头
不可以使用成员变量
用类名调用类方法

类方法可以调用对象方法(将对象作为参数传入)和类方法

!!!类方法不能调用自身,如果做了会发生无限循环

类方法的应用场景::

如果我们调用一个方法,该方法不需要使用成员变量(方法实现中不需要使用成员变量,成员变量可以做参数),我们就可以声明为类方法

为什么类方法不能使用成员变量?
类方法的使用没有创建对象,在堆区中就没有为成员变量分配存储空间,成员变量就没有值,访问就没有意义

匿名类:
1)使用匿名类访问成员变量(能,只能访问一次),以后再次访问实际上访问的是新空间
【Car  new】->speed=250;
NSLog(@"%d" ,[Car new]->speed);  //打印的结果是0 ,再次使用匿名类的时候会再次创建新对象

2)使用匿名类可以调用成员方法
[[Car new]  stop];
[[[Car   alloc ] init]   stop];
[[Car  alloc]   init]等价与[Car  new]

拷贝其他工程中的文件到新的target
1)目标文件---show  in Finder,拖拽到新工程
2)将目标文件复制到新工程的文件夹内,新工程--右击(add。。。),如果还不行,找到project---右侧build  phases--下面compile  sources添加

匿名类作为方法的参数:
【【Person  new】   goHome:【【Car  alloc】init】】;
匿名类优缺点:
优点:简化代码方便方法调用
缺点:匿名对象实例以后,只能正确使用一次成员变量。

作者: 1312878967    时间: 2015-8-18 00:25
学习了 学习了
作者: 愿得一人心1111    时间: 2015-8-18 21:54
赞  不错 值得收藏
作者: 第一梦    时间: 2015-8-18 21:57
谢谢了,查漏补缺很棒




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2