iOS开发

来源:互联网 发布:推荐一款手机编程软件 编辑:程序博客网 时间:2024/06/07 02:22

昨天提到了 OC 中对象方法的使用,也就是在方法之前是减号表示的方法,今天来看一下加号表示的方法,也就是类方法的使用 。

由于对象方法,我们在使用之前必须要有一个初始化对象的操作,就像昨天提到的那个初始化对象 p 一样,如果没有对象 p ,那么我们是无法调用对象方法并使用它的,由于每次调用对象方法都需要创建对象并初始化开辟存储空间,所以如果我们不想要每次都创建新的对象,或者说需要临时的使用一下某个方法,而这个方法又刚好没有使用到属性,即没有使用到成员变量,那么我们就可以把这个方法定义为类方法 。


比如现在有一个方法,实现两个数相加,这个方法的使用就完全用不到属性成员变量,所以我们就可以将其定义为类方法,声明代码如下:


+ (int)sumWithValue1:(int)value1 andValue2:(int)value2;


实现代码如下:


+ (int)sumWithValue1:(int)value1 andValue2:(int)value2 {        return value1 + value2;}


这样在 main 方法中进行调用时,代码如下:


int result = [Iphone sumWithValue1:10 andValue2:20];NSLog(@"result = %d", result);


运行结果:


result = 30


这里需要注意,对象方法可以和类方法一模一样,只需要将这里的加号 + 换成减号 - 就变成了对象方法,并且两个方法是不一样的方法,Xcode 不会提示方法重复 。


同时,不管我们在声明时声明的是类方法还是对象方法,我们都必须在代码实现部分去实现它们 。


现在我们一起来看一下对象方法和类对象之间的区别?为什么要一起来看一下它们的区别呢,因为部分正在看文章的朋友肯定会好奇一件事,既然类方法这么好用为什么我们不直接用类方法,还要什么对象方法干什么,浪费我们的存储空间,不知道大家是不是会有这么一个疑问呢,所以接下来我们来看一下它们之间的区别:


  1. 对象方法中可以直接调用类方法;

  2. 类方法中可以直接调用对象方法(不建议这样使用);

  3. 类方法中可以直接调用其他类方法;

  4. 对象方法中可以直接调用其他对象方法。


类方法一般用于定义工具方法,比如:字符串查找,文件操作和数据库操作 。


接下来,我们来看一下一个类方法的应用实例,现在我们有一个 iPhone 手机,它有三个颜色:黑色、白色和金色,我们先定义一个枚举,并用 typedef 给它起了一个别名,代码如下:


typedef enum {    kIColorBlack,    kIColorWhite,    kIColorGold,} IColor;


定义好枚举后,我们在代码声明部分对它进行声明,代码如下:


IColor _color;


修改之前的 info 方法,用 switch 语句对颜色进行判断,代码如下:


- (void)info {        NSLog(@"This is iPhone.");        // 如果在对象方法中想访问该对象的属性,可以直接写_属性名称即可    NSLog(@"颜色 = %i", _color);        NSString *name;       switch (_color) {                case 0:            name = @"黑色";                       break;                case 1:            name = @"白色";                      break;                case 2:            name = @"金色";                      break;                    default:            name = @"不知道";                      break;    }        NSLog(@"颜色 = %@", name);}


现在在 main 方法中对其进行调用,代码如下:


// 定义颜色p->_color = kIColorGold;//给对象发送消息[p info];


运行结果:


颜色 = 2颜色 = 金色


这时候我们可以看出刚刚的操作其实就是一个功能,所以我们可以将其封装到一个方法中,声明代码如下:


+ (NSString *)colorWithNumber:(IColor)number;


实现代码如下:

+ (NSString *)colorWithNumber:(IColor)number {    NSString *name;        switch (number) {                case 0:            name = @"黑色";                      break;                case 1:            name = @"白色";                      break;                case 2:            name = @"金色";                      break;                    default:            name = @"不知道";                      break;    }        return name;}


这就是相关类方法的使用介绍 。

以下为我的个人公众号,会定期推送苹果开发相关内容,欢迎关注。


0 0