2

私は iOS 開発の初心者であり、このドキュメント (インデックス付きリストを使用した TableView の構成に関する iOS 開発者ガイド) を読んでいるときに、これに出くわしました:

// Listing 4.7
for (State *theState in statesTemp) {
        NSInteger sect = [theCollation sectionForObject:theState collationStringSelector:@selector(name)];
        theState.sectionNumber = sect;
    }

セレクター ( ) とその目的を理解できませんでした。@selector(name)また、セレクターで渡された名前のメソッドを見つけることもできませんでしたnameより良い説明を見つけるために例をグーグル検索し、この例に出くわしました。

コード リストには、メソッド呼び出しであるステートメントがあります。     

self.tableData = [self partitionObjects:objects collationStringSelector:@selector(title)];

セレクターは と呼ばれるようになりtitleました。より良い説明を見つけることができませんでした.私の質問は、このセレクターとこのセレクターによって参照されるメソッドの目的は何ですか?それは何をして何を返す必要があるかです.

4

2 に答える 2

4

一般に

を使用して、@selector(title:)呼び出されるメソッドを定義します。

私の例では、

- (void) title:(id)someObject {}

最後のセミコロンに注意してください!最後にセミコロンがある場合、メソッドには上記の私のようなパラメーターがあります。

あなたのコードはちょうど述べて@selector(title)おり、次のようなパラメータなしでメソッドタイトルを呼び出します:

- (void)title {}

UILocalizedIndexCollat​​ionに固有

ドキュメントの状態:

セレクター
照合で使用されるオブジェクトの識別文字列を返すメソッドを識別するセレクター。このメソッドは引数を取らず、NSStringオブジェクトを返す必要があります。たとえば、これはオブジェクトのnameプロパティである可能性があります。

だから私はあなたがこのようにそれを実装することをお勧めします

self.tableData = [self partitionObjects:objects collationStringSelector:@selector(title)];
 ...
- (NSString *)title {
     NSString *title;
     // some code to fill title with an identifier for your object
     return title;
}
于 2012-07-23T09:08:48.560 に答える
-1

を次のように置き換えてみてtitleくださいself:

self.tableData = [self partitionObjects:objects collationStringSelector:@selector(self)];

私のために働いた

于 2015-03-16T04:16:17.777 に答える