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

objective-c - Objective-C中的只读层次模型

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:37:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在我的 Objective-C 应用程序中,我有一个构成模型的 NSObject 子类的层次结构。这些对象本身没有功能,即它们只有属性,它们的唯一目的是保存数据。此外,我有一个 Controller 来管理此层次结构(树)的实例。

只允许该 Controller 对树进行更改(例如树中对象的属性)。程序的其他部分应具有对(整个)树的只读访问权限。

完成此类访问管理的最简单方法是什么?



Best Answer-推荐答案


这是friend classes的经典案例.虽然 ObjC 不支持友元类的语言,但创建它们并不难。

首先,模型的公共(public)接口(interface)应该声明属性readonly。那部分应该是显而易见的。

然后在模型内部,您可以根据需要在类扩展中使您的属性可读写。 (如果你习惯了 ObjC,这也应该很明显;如果不明显,我会更新答案。)

现在故事的其余部分。创建一个“ friend ”类别(或“作家”或“ protected ”或任何对您有意义的名称)。

@interface ModelObject (Friend)
- (void)setSomePropertyid)someProperty;
@end

这只是告诉任何导入此类别的人 setSomeProperty: 存在。现在您的控件将导入此文件 (ModelObject+Friend.h) 并能够设置属性。其他人都导入 ModelObject.h 并且该属性看起来是只读的。

这适用于您需要访问的任何内容,当然不仅仅是属性。我经常创建不可变的类,然后创建一个“仅限 friend ”的 initWithX:andY:andZ: 方法。

关于objective-c - Objective-C中的只读层次模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623486/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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