0

Apple の Master Detail Template から取得した次のメソッドの Objective-C がわかりません。

- (void)insertNewObject:(id)sender
{
    if (!_objects)
    {
        _objects = [[NSMutableArray alloc] init];
    }

    [_objects insertObject:[NSDate date] atIndex:0];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0
                                                inSection:0];
    [self.tableView insertRowsAtIndexPaths: @[indexPath]
                          withRowAnimation: UITableViewRowAnimationAutomatic];
}

コードは MasterViewController.m ファイルにあります。私にとって混乱のポイントは次のとおりです。 - とは@[indexPath]どういう意味ですか? これは、何かを配列にするための構文ですか。文字列を表す文字として「@」に遭遇しただけです。明確化: NSIndexPath とは何か、またそれがどのように機能するかを理解しています。@ 文字が前に付いた角かっこでオブジェクトを配置する構文に慣れていません。これは何かを配列にしますか?複数の NSIndexPath がある場合はどうなりますか? @[indexPath1, indexPath2, indexPath3] この方法でそれらすべてを配列にロードできますか?これは NSObject から派生したもので機能しますか? 結果は常に配列ですか? これは言語のどこに文書化されていますか? この言語機能は何と呼ばれていますか (調べることができます)?

  • メソッド insertRowsAtIndexPaths:withRowAnimation は、テーブルに何かを配置する場所を指定しているようですが、正確に何を配置するかは指定していません。アイテムをテーブルに挿入するときに、どのオブジェクトをデータ ソースとして使用するかをメソッドがどのように認識しますか。NSMutable *_objects;デリゲートとデータ ソースの関係は xib で指定されているため、MasterViewController がデータとテーブルの関連付けを処理することは明らかですが、配列とどこかに指定されたテーブルとの 関係はないようです。

かなり基本的なものが欠けていることが明らかなので、これを説明してくれてありがとう。

4

1 に答える 1

1

これは何かを配列にするための構文ですか

はい。最新の Objective-C では、最新のコンパイラで理解されているように、ハードコードされたオブジェクトを簡単に作成するためのディレクティブclangがいくつかあります。@

@[object1, object2]

NSArray を作成します。

@{@"key1": value1, @"key2": value2}

NSDictionary を作成し、

@"hello world"

通常どおり NSString を作成し、

@1, @2, @YES, @3.1415927

それぞれ NSNumber インスタンスを作成します。

アイテムをテーブルに挿入するときに、どのオブジェクトをデータ ソースとして使用するかをメソッドがどのように認識しますか。

呼び出されたテーブル ビューに現在設定されているデータ ソースを使用します。

于 2012-11-30T19:52:42.757 に答える