2011-03-11 7 views
3

このメソッドとそれを(void)メソッドとして記載したドキュメントと混同しています。 NSIndexPath getIndexesメソッド....どのように?

「リターンのインデックスパスのインデックス」

、それはあまりにも何も返しませんか?

それはすべきではない:

- (NSIndexPath *)getIndexes:(NSUInteger *)indexes 

getIndexes: はインデックスパスのインデックスへの参照を提供します。符号なし整数アレイに

- (void)getIndexes:(NSUInteger *)indexes 

パラメータ インデックスポインタ。戻ったときに、索引パスの索引。 稼働状況 iOS 2.0以降でご利用いただけます。 NSIndexPath.h

答えて

4

サイズ[indexPath length]のNSUInteger配列を割り当てて、引数として渡す必要があります。戻り値はそこに書き込まれます。あなたは、その配列を自分で解放するか、それがこのようなスタック上に作成された何もしないようにしている:ので、多分受け入れられたオフ解雇、マックス、トーマスとカレブ

NSUInteger array[[indexPath length]]; 
[indexPath getIndexes: array]; 
+0

皆さん、ありがとうございました。私は今、それを得る、ありがとう。私はすべての3つが有効であるにもかかわらず、解決のためのマックスの答えを選択しました – user7865437

+0

ここでプロットを失う?\t NSUInteger配列[[indexPathの長さ]]; \t [indexPath getIndexes:array]; int len = sizeof(配列)/ sizeof(NSUInteger); \t NSLog(@ "%i"、len);私が与えられたセクションでどれだけの行を持っていても、lenのために戻ってくるのは2つですか? – user7865437

+0

インデックスパスには行数は格納されません。効果的に細胞にアクセスするために使用されます。そのためには[tableView numberOfRowsInSection]を使用する必要があります。 – Max

2

で宣言 たぶん、次の文は、Cの配列にメモリを割り当てるために、開発者の責任である

理由を説明します。

それは実際にインデックスをあなたのために入力されますCの配列へのポインタですので、さらに機能からそれを返すように理由はありません - あなたはすでにそのアドレスを知っています。

NSUInteger indexCount = [indices count]; 
NSUInteger buffer[indexCount]; 
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil]; 
+0

Thomas "C配列のメモリを割り当てるのは開発者の責任です。"私が見ているヘルプには表示されませんか? – user7865437

+0

私はここでクラスリファレンスを見てきましたhttp://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSIndexPath_Class/Reference/Reference.html –

+0

ああ、それについては、開発者ガイドその行を省略します! – user7865437

0

を次のように

は、あなたはあなたはとても役に立たない1人の背中を取得、NSIndexPathのインスタンスにそのメッセージを送信する機能を使用することができます。 -getIndexes:メソッドは、配列 'indexes'をインデックスパスのインデックスで塗りつぶします。だからあなたは次のようなことをします:

NSUInteger *indexes = calloc([indexPath length], sizeof(NSUInteger)); 
[indexPath getIndexes:indexes]; 

その後、インデックスはindexPathにあるインデックス値で埋められます。

0

、私はすべての3つの方法を試してみましたが、仕事には何も得ることができません解決策が速すぎる.....しかし、おそらく私はそれを得ることはありません?私はテーブルの必要な行にアクセスするためにそれをループするために、配列の適切なサイズを取得することはできません。私はcalloc([indexPath length]、sizeof(NSUInteger))が5行のグループの場合、NSUintegrを保持している各行に5行の配列を返します。.....または今のところそれは恥ずかしいビームです?

+0

インデックスパスは1つのセクションと1つの行だけを指定し、テーブルのすべての行は指定しません。テーブルのデータソースとデリゲートが連携してテーブルの行を提供するので、その行の数がわかっていて、すべてのデータにアクセスできる必要があります。 – Caleb

関連する問題