引入类方法可以减少内存的占用,因为只是使用对象方法的话,在调用函数时,必要首先创建对象,这会占用内存堆区的一部分空间。但是如果用类名直接引用方法,就会节省这块空间。
声明:
[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】】;
匿名类优缺点:
优点:简化代码方便方法调用
缺点:匿名对象实例以后,只能正确使用一次成员变量。
|
|