gpt4 book ai didi

objective-c - Objective-C 中的工厂方法模式 : NSClassFromString()

转载 作者:行者123 更新时间:2023-12-04 05:55:28 25 4
gpt4 key购买 nike

我已经确定了我正在开发的应用程序中工厂方法模式似乎合适的区域。我相当熟悉其他语言(C#、Java)中的这种模式,但我正在阅读“Cocoa 设计模式”一书,其中有一章关于动态创建,其中展示了如何使用 NSClassFromString() 方法。关于这个功能,它说:

This single function effectively reduces the well-known Factory Method pattern to a single line of code in many cases.



我想知道我是否应该使用这种动态创建方法而不是典型的工厂方法模式?动态创建方法是不是每次都胜过普通方法,还是有一种比另一种更适合的场合?

现在,我倾向于使用常规的工厂方法模式,但我想知道其他人是怎么想的?

问候,
缺口

最佳答案

我想说,书中的主张有点强。

您应该使用 NSClassFromString在两种情况下:

  • 您在运行时将类名作为字符串读取。显然,如果您将类名作为字符串获取,则必须以某种方式将其转换为类对象,并且 NSClassFromString是做到这一点的一种方法。如果您不信任字符串的来源,您可能应该根据允许的类的白名单测试字符串(或返回的类对象)。
  • 您正在弱链接框架并使用不支持 NS_CLASS_AVAILABLE 的 SDK/平台特征。查看 SDK Compatibility Guide有关这方面的更多信息。

  • 在任何其他情况下,最好使用类似 [MyClass class] 的表达式获取类对象。 .这样,如果类不存在(例如,因为您拼错了类名),您将在编译时收到错误消息。

    关于objective-c - Objective-C 中的工厂方法模式 : NSClassFromString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556902/

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