gpt4 book ai didi

objective-c - Cocoa Obj-C 中的类设计和对象字面量

转载 作者:行者123 更新时间:2023-12-03 16:57:54 25 4
gpt4 key购买 nike

假设该应用程序中有一个汽车的概念。汽车是 Car 的一个实例。可能的汽车数量很少,但大多数汽车的数据在设计时并不是已知的。每种汽车都是一个单例;每个应用程序最多有一种每种汽车。*

因为它们是单例,并且因为它们被命名,所以这意味着一些糖。最重要的一点是:当我将“Car.h”导入文件时,我希望符号“MAFerrari”、“MAMercedes”和“MAMclauren”开始显示在我的自动完成中,代码完成认为我正在尝试提供 Car* 的实例。

我的下一个贪婪的愿望是我希望能够将实例方法发送到我的 MAFerrari 文字,例如[MAFerrari topSpeed] 的意思是“获取与 Ferrari 相对应的 Car 单例实例,并将 topSpeed 发送给它”,但我承认这完全是微不足道的。即使是实用主义者也应该知道他们的乌托邦是什么样子。

最后,如果可能的话,我希望以干净的方式将三辆车的常量属性声明为 Car.m 文件顶部的文字数据。

现在,我再次重申,我实际上并不期望所有这一切在 Objective C 中成为可能。我只是想知道我们能离这一切有多近。

我最接近的想法是为每种类型的汽车创建子类 Car,并为每种汽车提供一个 +sharedInstance 方法。 SharedInstance 可以实现单例模式:如果它被初始化,则返回它,否则初始化它,存储它(在哪里?它应该是 Car 类层次结构的私有(private)),然后返回它。每个子类都可以实现自己的初始值设定项,其中包含该子类的默认值。

以下是我不喜欢的地方:

  1. 我认为每当我使用这些子类时都必须导入所有头文件。这绝对很糟糕。还有别的办法吗?
  2. 我必须为每个子类创建 .m/.h 文件对。这看起来像是很多样板文件,因为它们没有独特的行为。
  3. [[MAFerrari sharedInstance] topSpeed] 不如 [MAFerrari topSpeed],但我承认这没什么意义。

无论如何,你会怎么做?

*实际上,出于好奇,这不是汽车,而是应用内购买 Assets 。

最佳答案

听起来你想要的只是一个全局变量。您可以创建一个名为任何您想要的名称的全局变量(例如,MAFerrari),并在其中添加您想要的任何内容 - 变量的内容是多个单例类的实例还是同一类的多个实例,从这一点来看并不重要考虑到有全局名称来引用对象。

关于objective-c - Cocoa Obj-C 中的类设计和对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com