【发布时间】:2014-01-07 08:13:27
【问题描述】:
这个问题专门针对静态库/框架;换句话说,其他人最终会接触到的代码。
我相当精通属性,因为我在 iOS 6 发布时就开始了 iOS 开发。我使用了在接口扩展中声明的隐藏属性来完成我所有的“私有”属性工作,包括在我不希望其他人修改的面向公众的属性上使用readonly,以及在接口扩展中使用readwrite。
重要的是我确实不希望其他使用这些静态库/框架的人在我不允许的情况下访问这些属性,如果我允许他们也不编写这些属性阅读它。
我早就知道他们理论上可以创建自己的接口扩展,并让我的readonly 属性readwrite 自己,或者猜测隐藏属性的名称。
如果我想阻止这种情况,我应该使用带有@private 标记的 ivars 和直接声明的 ivars 吗?这样做有潜在的失败吗?它是否真的让我获得了额外的安全措施,或者它是一个红鲱鱼?
【问题讨论】:
-
您无法阻止在运行时访问该属性。比较stackoverflow.com/questions/4777165/…。
-
我很清楚,Obj-C 运行时的强大功能带来了一些安全“风险”。我更多地想到的是随便的黑客,而不是完全敬业的黑客。
标签: ios objective-c properties ivar