OC中对象方法的使用详解

4 篇文章 0 订阅

昨天提到我们可以通过 Iphone 的对象 p 直接来操作对象的属性,但是如果你参考昨天的文章书写了如下代码:

p->_size = 3.5;
p->_model = 4;
p->_cpu = 1;
p->_color = 0;


你会发现,Xcode 会报错,这是为什么呢?由于默认情况下,对象中的属性是不能直接访问的,所以要想让上面的 4 行代码不报错并能正常运行就是需要将这些属性设置为能直接访问,只要让类中的属性公开,就可以直接通过一个指向结构体的指针来操作对象中的属性,方法是在属性的声明之前加上如下代码即可:


@public


这样,通过 Iphone 类型的指针,也就是 p 对象就可以直接对属性进行访问了 。


既然已经为其属性进行了赋值,接下来我们就通过打印属性来观察一下我们的赋值是否成功,代码如下:


NSLog(@"size = %f, color= %i, model = %f", p->_size, p->_color, p->_model);


运行结果:


size = 3.500000, color= 0, model = 4.000000


属性方面的知识说完了,现在来看一下行为方面的操作 。


OC 中的行为和 C 语言中的函数一样,都是用来保存一段特定功能的代码,C 语言中定义函数分为两部分:声明和实现,OC 中也是一样,声明写在 @interface 中,实现写在 @implementation 中,C 语言的函数分为两种:内部函数和外部函数,同样的 OC 中的方法也分为两种:类方法和对象方法,类方法只能用类名来调用,对象方法只能用对象来调用 。


现在我们来定义一个显示 iPhone 系统信息的行为,代码如下:


- (void)info;


由于此行代码是声明,所以记得将其写在 @interface 中,之前我们说到的 C 语言定义这个方法的代码如下:


void info();


通过对比我们可以发现 OC 方法名书写完毕后不需要像 C 语言那样加上括号作为结束,因为 OC 中的方法,如果没有形参不需要写 ( ) ,而是直接写一个分号即可,那么为什么 OC 中没有形参就不需要写 ( ) 呢?因为 OC 方法中的 ( ) 有特殊用途,OC 方法中的 ( ) 是用来括住数据类型的,也就是前面的 void 类型就需要用括号进行括住 。


关于前面的减号 - ,我们需要记住,OC 中的类方法用加号 + 表示,对象方法则用减号 - 表示,由于这里用的减号,所以它是一个对象方法,类方法只能通过类名进行调用,对象方法只能用对象进行调用 。


行为声明好之后,我们来看一下如何进行实现方法的书写,我们之前说过实现代码需要写在 @implemention 中,行为的实现代码只需将声明代码复制一份粘贴到实现代码书写位置,然后将分号去掉,加上一个花括号,所有实现代码则写在这个花括号中,代码如下:


- (void)info {
    NSLog(@"This is iPhone.");
}


这样我们这个 info 方法的实现代码也就写好了,接下来我们看一下如何在 main 方法中进行调用,之前我们介绍过通过 [类名/对象名 方法名]即可对一个对象的方法进行调用,参照之前 Iphone 类调用 new 方法进行初始化操作的代码,如下:


[Iphone new];


这里需要通过 p 对象调用 info 方法,代码自然就可以这样写:


[p info];


运行结果:


This is iPhone.


现在来看一个扩展知识,比如我们现在需要在 info 这个方法中输出属性成员变量值,参照之前的代码我们知道,可以通过对象 p 来调用属性即可,例如输出颜色,代码如下:


p->_color


但是,这里我们发现在 info 方法中并没有对象 p ,所以现在我们需要知道的一个知识点就是,如果在对象方法中想访问该对象的属性,可以直接写下划线_加上属性名称即可,代码如下:


NSLog(@"颜色 = %i", _color);


我们在这行代码添加到 info 方法中,运行结果如下:


颜色 = 0


然后最后需要注意的一个就是方法的四种情况:无参无返回值,无参有返回值,有参无返回值和有参有返回值,关于这四种情况,可以参考公众号之前推送的文章《 Objective-C 中无参无返回值方法的声明及调用 》,《 Objective-C 中无参有返回值方法的声明及调用 》,《 Objective-C 中有参无返回值方法的声明及调用 》和 《 Objective-C 中有参有返回值方法的声明及调用 》四篇文章 。

欢迎关注公众号:爱上Xcode,将定期推送苹果开发相关内容。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值