A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© agelessman 中级黑马   /  2014-4-2 14:58  /  1418 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 agelessman 于 2014-4-3 19:13 编辑

oc中的@public   @private  @protected都怎么用?越详细越好

2 个回复

倒序浏览
成员变量的作用域:
@public:在任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中直接访问(用@property声明和在@implementation声明成员变量默认)
@protect:能在当前类和子类的对象方法中直接访问(在@interface声明的成员变量默认)
@package:只要处在同一个框架中,就能直接访问对象的成员变量

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
转自本人博客http://850361034.blog.163.com/blog/static/3280380920142271033170/
-----------------成员变量的1-4种作用域-------------------------------

ps:什么都不写,在@interface下默认是protected


@public  在有对象的条件下,在任意地方都能直接访问成员变量


@private   只能在当前类的对象方法中直接访问,其它地方通过set get方法访问(也就是说主函数不能访问,这个数据类型在Person中,那么只能在Person类中访问,他的子类中也有那种数据类型,但是不能在子类中直接访问--只能通过set,get方法访问-----------果在类的.m文件中【也就是@implementation中,但是不能跟@interface中重名】定义成员变量,则默认是private,即使使用public等其它作用域修饰,也不能改变private)


@protected(默认)   能在当前类和子类的对方法中直接访问(和private类似,但是在子类中也可以直接访问-----什么都不写,在@interface下默认是protected)

@package  作用域介于private和public之间,若2个类处于同一个框架中则可以直接访问对象的成员变量【学习框架才能用到】

----注意:如果在类的.m文件中【也就是@implementation中,但是不能跟@interface中重名】定义成员变量,则默认是private,即使使用public等其它作用域修饰,也不能改变private
-----写声明的目的是为了保证类的完整性,保证类的分工。并且开发中都会写完整。
-----父类=超类  superclass

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马