悪いスタイルと見なされることを 2 つ実行しますが、理由があり、Cocoa ソリューションを受け入れています。それが何であるかはわかりません。
NSArraya に対してタイプ セーフな が必要で、UIView次にs のNSArray配列に対してタイプ セーフな が必要UIViewです。の 2D 配列UIViews。
UITableView垂直テーブル ビュー内にネストされた水平テーブル ビューを持つカスタム double を実装したので、これが必要です。私は自分のカスタムViewsArrayをViews2DArray、他のプログラマーが簡単に私の にコンテンツを与えるデータ構造として使用しますDoubleTableView。それは延長したい十分な理由NSArrayですか?
私が抱えている問題は、メソッドの機能をオーバーライドしたことです。
(NSArray *) initWithObjects:(id) firstObject ...なので:
(ViewsArray *) initWithViews: (UIView *) firstView, ...
しかし、 my メソッドの戻り値は であり、 myNSArrayに他のメソッドが含まれていませんViewsArray。これは、認識されていない選択された例外を意味します。ビューを含むNSArrayプロパティを作成することでこれを一時的に解決しましたが、コンテンツを.ViewsArrayDoubleTableView
元:
[[self.delegate content].arraysOfViews objectAtIndex:indexPath.section];
それ以外の
[[self.delegate content] objectAtIndex:indexPath.section];
数文字であることはわかっていますが、良いコードを書くために最善を尽くしています。
selfに戻り、、などのプロパティを追加するにはinitWithViewsどうすればよいですか? (キャスティング?) 私はこれについて間違っていると考えていますか (Java/typesafity で ...)? このようなデータ構造に最適なソリューションは何ですか?NSArraygreatestHeighttotalWidth
編集:
「スタイリッシュ」と思われる方法で問題を解決するために、次のことを行いました。
これは私のヘッダーです (これは 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 を管理するだけです。きれいな参照を許可します。
今日私が学んだこと: いまいましいドキュメントを読んで、自分の言語を受け入れてください。このインスタンスが最後のものを示していない可能性があることはわかっていますが、より近いです;)