OStack程序员社区-中国程序员成长平台

标题: objective-c - Objective-C中的只读层次模型 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 16:37
标题: objective-c - Objective-C中的只读层次模型

在我的 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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4