簡體   English   中英

如何在Objective-C中創建對象?

[英]How to create object in Objective-C?

我是iOS開發的新手。 目前,我正在閱讀本教程http://www.appcoda.com/how-to-handle-row-selection-in-uitableview/ 我在閱讀此行時遇到問題

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;

我知道objective-c中的對象是通過以下方式創建的

 classname *objecname = [[classname alloc]init];

我的困惑點是UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

這里如何創建cell對象? 請告訴細節。

根據您鏈接到的教程,我假設您正在處理選擇行。 選擇一行時,您可以訪問該行的NSIndexPath ,其中包含兩個部分:

  1. 單元格部分
  2. 單元格的行

有了這些信息,讓我們分解混亂的代碼: UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

UITableViewCell *cell

這部分聲明您的變量。 您已選擇將其命名為cell 您可以輕松地將其命名為theCell ,如下所示:

UITableViewCell *theCell

*表示您正在聲明一個指針,該指針僅是對實際對象或表視圖單元格的引用。

[tableView cellForRowAtIndexPath:indexPath]

tableView引用剛剛選擇的UITableView UITableView有一個稱為cellForRowAtIndexPath的方法,該方法的作用是在UITableView的指定節和行中檢索單元格。 在您的情況下,它將檢索剛剛選擇的行,並將對該行的引用存儲在cell變量中。

是的,當聲明一個對象時,它將采用以下語法:

classname *objecname = [[classname alloc] init];

這里的關鍵詞是new 在處理UITableView行時,您不想創建新的單元格,因為您無法選擇不存在的單元格。 您要獲取用戶剛剛選擇的單元格。

我假設您在didSelectRowAtIndexPath:方法中有此代碼,對嗎?

如果是這樣,則您正在點擊屏幕上的一個單元格,因此該單元格對象已經存在。 它是在哪里創造的? cellForRowAtIndexPath:內部,您已經編寫了。

所以當你打電話時

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

它只是為您提供要使用的單元對象,但不會創建新的單元對象。

單元格不是用該行創建的。 該行將引用該indexPath的表視圖中已存在的單元格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM