gpt4 book ai didi

objective-c - Objective C——创建和初始化对象的首选方式

转载 作者:太空狗 更新时间:2023-10-30 03:48:48 25 4
gpt4 key购买 nike

这两种创建和初始化对象的方法哪个更可取?

MyClass oClass = [[MyClass alloc] init];
oClass.length = 5;
oClass.text = @"Hello";

或者使用包含大致相同代码但看起来像这样的类方法:

MyClass oClass = [MyClass myClassWithLength:(int) 5 andText:(NSString *) @"Hello"];

当我看到事情以不止一种方式完成并且我不知道一个是否比另一个更好,或者为什么更好时,我讨厌它!

最佳答案

不要成为仇恨者。 :-)

顺便说一句,我假设你的意思是:

(编辑:删除了不必要的转换)

MyClass oClass = [[MyClass alloc] initWithLength:5 andText:@"Hello"];

多个初始化...方法的原因是为了让开发人员更方便地创建正确初始化的实例。因此,例如,如果您发现开发人员经常需要创建具有长度和文本的 MyClass 实例,您可以通过提供允许他们一步完成的 API 来让他们的生活更轻松。如果您发现开发人员还经常需要仅使用文本字符串创建 MyClass 的实例,您还可以提供 -initWithText: 方法。

如果以这种方式创建的实例经常用作临时对象(即,不存储在实例变量或静态变量中),您还可以添加一个类便利方法,如 +myClassWithText: 返回使用提供的文本字符串初始化的 MyClass 的自动释放实例。

至于哪个更好:尽可能完全初始化对象总是更好,因此如果对象需要正确初始化两个值,请使用允许您提供两个参数的方法。如果您不需要存储对正在创建的实例的引用,请使用类便捷方法,这样您的代码就不必处理内存管理。

关于objective-c - Objective C——创建和初始化对象的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417925/

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