Sco*_*ton 5 creation object objective-c preference
创建和初始化对象的两种方法之一是否更可取?
MyClass oClass = [[MyClass alloc] init];
oClass.length = 5;
oClass.text = @"Hello";
Run Code Online (Sandbox Code Playgroud)
或者使用包含大致相同代码的类方法,但如下所示:
MyClass oClass = [MyClass myClassWithLength:(int) 5 andText:(NSString *) @"Hello"];
Run Code Online (Sandbox Code Playgroud)
当我看到事情不止一种方式而且我不知道一个人比另一个人好,或者为什么时,我讨厌它!
不要成为仇敌.:-)
顺便说一句,我假设你的意思是:
(编辑:删除不必要的演员表)
MyClass oClass = [[MyClass alloc] initWithLength:5 andText:@"Hello"];
Run Code Online (Sandbox Code Playgroud)
多个init ...方法的原因是为了让开发人员更方便地创建正确初始化的实例.因此,例如,如果您发现开发人员经常需要使用长度和文本创建MyClass实例,则可以通过提供允许他们一步完成的API来简化他们的生活.如果您发现开发人员经常需要仅使用文本字符串创建MyClass实例,您也可以提供一种-initWithText:方法.
如果以这种方式创建的实例经常用作临时对象(即,不存储在实例变量或静态变量中),您还可以添加类方便方法,类似于+myClassWithText:返回使用提供的文本字符串初始化的自动释放的MyClass实例.
至于哪一个更好:在可能的情况下完全初始化对象总是更好,所以如果对象需要两个值都要正确初始化,请使用允许您提供两个参数的方法.如果您不需要存储对正在创建的实例的引用,请使用类便捷方法,这样您的代码就不必处理内存管理.
| 归档时间: |
|
| 查看次数: |
14601 次 |
| 最近记录: |