学习笔记17:OC基础(4)

七分热度_HD 2015-08-17 09:50:55

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


声明:


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

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

类方法使用注意事项:

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】】;
匿名类优缺点:
优点:简化代码方便方法调用
缺点:匿名对象实例以后,只能正确使用一次成员变量。
...全文
411 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,160

社区成员

发帖
与我相关
我的任务
社区描述
在CSDN学院遇到的问题反馈及对学院的改进建议等。
社区管理员
  • 软件培训社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧