• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Objective-C中self.与_访问方式的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Objective-C中属性self.a与_a访问的区别:

 

在OC中我们可以通过指令@property定义属性。

OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些。

一般定义属性的方法如下,在Class Test中定义属性int a。

 

@interface Test:NSObject
@property int a;
-(void) changeAValue:(int) newValue;
@end


在类的实例方法中,我们可以用下面两种方式来访问a属性:

 

1、直接用属性名访问:

 

-(void) changeAValue:(int) newValue
{
    _a = newValue;  // 默认生成的属性成员变量前面会自动加上“_”前缀
}


2、通过self.a的形式访问

 

 

-(void) changeAValue:(int) newValue
{
    self.a = newValue;
}

 

这两种访问方式有区别吗?答案是肯定的。

通过第一种方式访问,其实是类似于C++的访问方式,是直接访问的实例变量并赋值。而第二种方式,并不像其表面那么直观,它其实是通过调用编译器自动生成的对于a变量的赋值函数来实现的。即

 

-(void) changeAValue:(int) newValue
{
    self.a = newValue; // 此处实际是调用 [self setA:newValue];
}

 

个人感觉在类中调用自身的属性,还是用self.a的形式比较好。因为它封装了访问方法,加强了我们对变量的控制,也更面向对象些。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
iOS.Book.Effective Objective-C 2.0发布时间:2022-07-12
下一篇:
objective-c 语法快速过(6)内存管理原理发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap