cocoa – 在NSDocument和UIDocument之间共享代码

cocoa – 在NSDocument和UIDocument之间共享代码,第1张

概述我创建了一个使用Core Data的基于文档的应用程序.我首先创建了mac版本,现在它正常工作,我正在继续创建它的iOS版本. 我只是无法理解如何在iOS / mac版本之间最大化代码重用,相对于Core数据位,因为它们不使用相同的类. 我处理保存的文档类是NSPersistentDocument的子类.我的意图是一个设计良好的模型类应该在两种环境中都能工作,特别是因为我对Core数据没有那么多花 我创建了一个使用Core Data的基于文档的应用程序.我首先创建了mac版本,现在它正常工作,我正在继续创建它的iOS版本.

我只是无法理解如何在iOS / mac版本之间最大化代码重用,相对于Core数据位,因为它们不使用相同的类.

我处理保存的文档类是NSPersistentdocument的子类.我的意图是一个设计良好的模型类应该在两种环境中都能工作,特别是因为我对Core数据没有那么多花哨的东西.

现在,由于NSPersistentdocument在iOS中不可用,我碰壁了.我尝试使用#if TARGET_OS_MAC和TARGET_OS_IPHONE来解决这个问题,并以这种方式使其成为iOS版本中UIManageddocument的子类.这显然会很方便,但我似乎无法让它像那样工作.而且它看起来非常混乱,因为还有许多其他东西必须被条件化.

我也尝试在NSdocument / UIdocument上构建类,而不是自己实现Core数据钩子,但它看起来也很混乱,让我觉得这不是正确的方法.

问题:

对我来说,在iOS / mac版本之间重用相同的文档类似乎是一个好主意,但也许我很天真.

最好的方法是什么?

我应该忘记代码共享并为iOS版本创建一个单独的文档类来模拟mac版本中存在的所有方法吗?

解决方法 (从我的评论中提出这个问题.)

一般情况下,你有两个必须从不同的超类继承但又想要共享大量代码的类的情况是组合.将共享代码放在一个单独的类中;您的NSdocument和UIdocument子类都可以保留该类的实例,并在需要调用该共享代码时向其发送消息. (尽管@noa提及,您可能想要考虑所有代码是否都属于您的文档类中.)

当然,那么你最终可能会编写一些方法,如:

- (ID)doSomething {    return [sharedController doSomething]}

这可能会变得很痛苦…所以你可能想要研究一下Objective-C的message forwarding系统.

总结

以上是内存溢出为你收集整理的cocoa – 在NSDocument和UIDocument之间共享代码全部内容,希望文章能够帮你解决cocoa – 在NSDocument和UIDocument之间共享代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存