OC-访问控制与安全

OC-访问控制与安全

实例变量的作用域 (访问控制)

  • OC中提供了4个指令,用于控制访问对象的实例变量
    • @private
      • 实例变量只能在本类中被使用
    • @protected(默认)
      • 允许被子类访问
    • @public
      • 公共访问
    • @package
      • 只能用于64位运行库, 即同一个库或框架中的代码可以访问
        在32位运行库中等同于@public
  • 在类的接口部分,指令出现在他们描述的实例变量之前,当给出一个指令时,它的有效区间直到另一个指令出现为止


  • 隐藏实例变量声明

  • 从Xcode4.2开始,我们可以在类的扩展中声明实例变量和属性
  • 即可以在类的扩展中声明实例变量
  • 但是,现在一般都直接写在@implementation中,就可以实现隐藏,例如:
  • 实际上,现在,在类扩展或者在@implementation部分声明的实例变量都是@private的,其他编译器指令不会起作用
  • 但是在扩展与在@implementation部分声明的区别是
    • 在扩展部分声明的实例变量子类是可以访问到的
    • 但是在@implementation部分声明实例变量子类是绝对看不见的
#import "Person.h"

    @implementation Person
    {
        int privateVariable;
    }

    -(void) someMethod;

    @end


  • 命名空间

  • 在OC中没有命名空间的概念
  • 不同的框架一般都是通过类的首字母来区别,例如NSString

安全问题

  • 隐藏实例变量或者限制访问他们在类别的面前都没有用
  • 我们还是可以使用类别来访问类隐藏的变量或者方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值