gpt4 book ai didi

iphone - 有很多 "initWith"参数通常是不好的做法吗?

转载 作者:可可西里 更新时间:2023-11-01 04:19:25 26 4
gpt4 key购买 nike

例如,我有一个 UIView 的实现。 UIView 包含两个标签,一个图像和一个框架。

我的“init”方法最终看起来像这样:

- (id)initWithFrameAndLabelArrayAndImage:(CGRect)frame:(NSArray *)labelArray:(UIImage *)image;

这被认为是不好的做法吗?拥有一个简单的“initWithFrame”方法并将其他标签和图片作为@properties 是否更好?

最佳答案

没关系。苹果经常这样做。例如,看看 NSString:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsstring_Class/Reference/NSString.html

– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCharacters:length:
– initWithCharactersNoCopy:length:freeWhenDone:
– initWithString:
– initWithCString:encoding:
– initWithUTF8String:
– initWithFormat:
– initWithFormat:arguments:
– initWithFormat:locale:
– initWithFormat:locale:arguments:
– initWithData:encoding:

但是,按照这些模式,您的:

- (id)initWithFrameAndLabelArrayAndImage:(CGRect)frame:(NSArray *)labelArray:(UIImage*)image;

应该是:

- (id)initWithFrame:(CGRect)frame labels:(NSArray *)labelArray image:(UIImage *)image;

话虽如此,我可能不会传递标签数组。我会传递数据并让自定义 View 获取该数据并创建/布局 subview 。您有点在公开方法中公开构成自定义 View 的内部 View ,并且您可能希望在将来更改呈现和组合它们的方式。

另一种方法是使用委托(delegate)来呈现标签,这些标签将通过调用委托(delegate)获取所需数据来呈现标签 - 类似于 TableView 。

关于iphone - 有很多 "initWith"参数通常是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528738/

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