我将做两件被认为是糟糕风格的事情,但我有理由,而且我对 Cocoa 解决方案持开放态度,我只是不知道它是什么。
我想要一个NSArray
对 a 类型安全的类型UIView
,然后NSArray
是对 s 的数组类型安全的类型UIView
。的二维数组UIViews
。
我喜欢这个,因为我已经实现了一个自定义双UITableView
精度表,它在垂直表视图中具有嵌套的水平表视图。我会使用我的自定义ViewsArray
和Views2DArray
数据结构,其他程序员可以轻松地为我的DoubleTableView
. 这是想要扩展的充分理由NSArray
吗?
我遇到的问题是我已经覆盖了该方法的功能:
(NSArray *) initWithObjects:(id) firstObject ...
作为:
(ViewsArray *) initWithViews: (UIView *) firstView, ...
但是 my 方法的返回值是 an NSArray
,它没有包含在 my 中的其他方法ViewsArray
,这意味着无法识别的选定异常。我通过创建一个包含我的视图的NSArray
属性暂时解决了这个问题ViewsArray
,但是当我想将我的内容提供给我的DoubleTableView
.
前任:
[[self.delegate content].arraysOfViews objectAtIndex:indexPath.section];
代替
[[self.delegate content] objectAtIndex:indexPath.section];
我知道这是几个字母,但我正在尽我所能写出好的代码。
我怎样才能返回self
我的initWithViews
并拥有我添加的,等NSArray
属性?(铸造?)我是否在考虑这个错误(使用 Java/typesafity ...)?像这样的数据结构的最佳解决方案是什么?greatestHeight
totalWidth
编辑:
为了以我认为“时尚”的方式解决我的问题,我做了以下事情:
这是我的标题(注意它是一个 NSObject):
@interface ViewsArray : NSObject
@property int greatestHeight;
@property int greatestWidth;
@property int totalWidth;
- (ViewsArray *) initWithViews: (UIView *) firstView, ...;
- (UIView *) getViewAtIndex: (NSInteger) index;
- (NSUInteger) viewCount;
@end
这是在我的实现中:
@interface ViewsArray ()
@property (retain, nonatomic) NSArray *views;
@end
这意味着我只管理一个私有 NSArray。允许漂亮的参考。
我今天学到的东西:阅读该死的文档并接受你的语言。我知道这个实例可能不会显示最后一个,但我更接近;)