oc基础复习08-OC的类方法

直接上代码 代码里面有注释

 1 #import <Foundation/Foundation.h>
 2
 3 @interface Animal : NSObject
 4 //类方法使用 “+”开头 不带参数的
 5 +(void)eat;
 6
 7 +(void)eat02:(NSString *)name;
 8
 9 @end
10
11
12 @implementation Animal
13
14 +(void)eat
15 {
16     NSLog(@"Animal is eating!");
17 };
18
19 +(void)eat02:(NSString *)name
20 {
21     NSLog(@"Animal is eating %@", name);
22 }
23
24 @end
25
26 int main(int argc, const char * argv[]) {
27     @autoreleasepool {
28         // insert code here...  //看到这里没有 直接使用类名调用方法
29         [Animal eat];
30         [Animal eat02:@"leaf"];
31     }
32     return 0;
33 }

对象方法

1.减号开头

2.只能由对象来调用

3.对象方法可以使用成员变量

类方法:

加号开头 有类直接调用 类方法不能访问成员变量(实例变量)

类方法的好处

不依赖于对象 执行效率高

时间: 2024-10-13 04:16:41

oc基础复习08-OC的类方法的相关文章

oc基础复习01-第一个OC程序

近期简单复习下OC打开iTerm工具 输入命令 mkdir reviewoc 打开Sublime Text文件 open -a Sublime\ Text 写入如下代码: 1 #include <stdio.h> 2 //main所有程序的入口 哈哈 这里就不说了 3 int main() 4 { 5 printf("Hello OC \n"); 6 } 保存为review01.m 编译文件 在reviewoc目录 cc -c review01.m 文件没有错误 直接会产生

OC基础复习(六)之构造方法小结

写到这里心慌慌的,压力骤然而起, 1.什么是构造方法? OC构造方法 构造方法我们创建一个对象的时候一般喜欢直接调用一个类方法,比如有一个Person类,我们为这个Person类创建对象一般是直接这样[Person new];其实new是NSObject中的一个类方法,这个new方法中是先调用了alloc方法,alloc方法也是一个类方法,作用是创建这个类的对象,再将这个对象的指针返回:再调用创建的对象的对象方法init,作用是初始化创建的对象的属性,然后返回这个已经被初始化的对象.比如: Pe

OC基础复习(三)之类方法和对象方法的理解

面向对象的难易点:其实也就是封装:要会调封装,也要会自己封装,封装就是给出一些接口,让我们去用,我们不关心其实现,但往往学的时候不踏实 说他容易是用着容易,只要有接口,就可以完成很多我们想要的功能,但往往分不清功能是自己能实现还是通过别人写好的框架或者方法来帮我实现 所以需要记忆一些常用方法和框架.把自己的算法思想和一些接口框架相结合. OC 有两种类型的方法,类方法和对象方法(也被称为实例方法) 1.类方法:以+开头,不分配内存空间(这句话,问题来了,为什么?) 什么时候分配内存空间,很显然只

2014.12.10 OC基础复习

oc是一种没有垃圾回收机制的语言,再没有打开arc的情况下,需要手动管理内存 @为关键字的开头,也是字符串的开头 @interface --@end 写对类的声明,包括对成员变量和方法的声明,@implementaion --@end之间写对类的方法实现,方法形如- (void)setAge:int; +号表示静态方法,-号表示动态方法 对象的声明初始化都是Student *st = [[Student alloc]init]; st指针就表示该对象 st.age不是访问成员变量,而是根据情况调

2014.12.11 oc基础复习

这一天主要学习了内存管理的部分,感觉稍显复杂,但只要遵循总的原则就不会错 谁声明,谁销毁,谁retain,谁release 1.在类的成员变量是oc对象时,set方法需要写内存管理如 -(void)setBook:(Book *)book{ if( _book != book){ [_book release]; _book = [book retain]; } } 还要在调用这个set方法的类的dealloc方法中,加入[_book release] 在声明该对象成员变量的属性时,加入reta

oc基础复习05-OC的属性 和 点语法(转)

这篇文章大部分都是转载网络上的 里面有部分我更改的内容 一.设置器setter 访问器getter setter: set+首字母大写的实例变量名 如:- (void)setNickName:(NSString *) name;//参数名不要与实例变量名相同 getter: 与实例变量名相同(没有短横线),并且返回值类型也一致 例: @interface Cup:NSObject { float _price; } - (void)setPrice:(float)price; - (float)

oc基础复习03-OC的类

首先要想想面向对象和面向过程 在编程语言中 C是面向过程的 OC是面向对象的(一定要有一切即对象的思想)java也是对象对象的 js lua php是解释性语言(脚本) 不过现在好多都是模拟面向对象思想 也很不错. 在OC语言中 1.类的声明 @inteferface 类名:父类 { //这里声明类的属性 } //函数的声明 @end 2.类的实现 @implementation 类名 //函数的实现 @end 现在我们来些一个实例  写一个动物类 Animal 属性weight, sex;方法

OC基础复习(二)之对象的存储细节

1.内存分为5大区:栈区,堆区,Bss段,数据区,代码区(排序方式:由高地址-->低地址) 其中注意:栈区对象的地址分配是先分配高地址,再分配低地址,(通俗讲就是在栈区中存的变量,先从地址高的开始往下存) 堆区是从低地址开始分配,再分配到高地址  如下图; 栈区:存储局部变量 堆区:存储程序运行的过程中动态分配的内存空间(通俗的理解就是实例对象,例如:Person *p = [Person new],这块内存空间就是指针变量p指向的这个空间) Bss段:存储未初始化的全局变量和静态变量 数据区:

oc基础复习10-OC的id

id类型 数据类型: 1.可以用来定义变量 2.可以用来当作参数 3.可以用来当作返回值 id类型是一个万能指针(可以保持任何对象的地址) id相当于 NSObject * id的本质 typedef struct objc_object *id; id是一个动态类型,在运行时才确定id的真实类型 id类型还可以调用私有方法 id和NSObject *的区别:id调用子类特有的方法不用强制类型转换 注意:id后面不能加*  id a = [Animal new];这个是正确的