2012-11-30 31 views
0

這個代碼,我不明白,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是什麼以及它的功能。我不熟悉用@字符開頭的括號中的對象的語法。這是否是一個數組?如果我有幾個NSIndexPaths呢?我可以用這種方式將它們全部加載到數組中@ [indexPath1,indexPath2,indexPath3]這是否適用於派生自NSObject的任何內容?結果總是一個數組?這是用什麼語言記錄的 - 這個語言特性叫什麼(所以我可以查看它)?

  • 該方法insertRowsAtIndexPaths:withRowAnimation似乎指定的位置放入表中的東西,但不完全是放什麼。在向表格中插入項目時,該方法如何知道將什麼對象用作數據源。委託和數據源關係在xib中指定,因此很顯然MasterViewController將處理數據與表的關聯,但似乎與NSMutable *_objects;數組和表中指定的表沒有任何關係。

感謝您的解釋,因爲它很明顯我缺少一些非常基本的東西。

+0

*「我不明白C++」* - 你的意思是Objective C嗎? – Pubby

+0

@ Pubby是的,謝謝。我將解決問題 – StoneBreaker

回答

1

這是爲了使一些數組中的語法

是。在現代的Objective-C,採用最新的clang編譯器所理解的那樣,有一些更@指令輕鬆創建硬編碼的對象:

@[object1, object2] 

創建一個NSArray;

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

創建一個NSDictionary,

@"hello world" 

創建一個NSString,作爲通常情況下,和

@1, @2, @YES, @3.1415927 

分別創建的NSNumber實例,。

在將項插入表中時,該方法如何知道將哪個對象用作數據源。

它使用當前在調用它的表視圖上設置的數據源。

+0

感謝您對語言功能的解釋。這個功能的名稱是什麼,以便我可以閱讀它?我仍然對數據源問題感到困惑。如果我向MasterViewController對象添加了另一個NSMutable數組,那麼在將數據放入表時將使用哪個數組?據我瞭解,數據源只適用於MasterViewController類,並非專門針對類中的ivars。它是如何指定數組用作代碼中的數據源的。我在調用insertRows時看不到它。謝謝,我爲我的無知道歉。 – StoneBreaker

+0

@StoneBreaker它們在邏輯上稱爲「對象文字」。如果添加另一個數組,那仍然沒有關係。表視圖將始終使用設置爲其數據源的那個。 – 2012-11-30 20:05:41

+0

謝謝。我想這是我的麻煩。我沒有看到xib中的任何地方或者我將NSMutableArray * _objects設置爲數據源的代碼。在連接檢查器中,我找到文件的所有者 - 在這種情況下,MasterViewController作爲數據源和委託。數據源或委託在源中根本沒有引用。編譯器和運行時間如何知道在MasterViewController中使用該iVar _objects? – StoneBreaker