如何在Objective-C中创建对象?

Bir*_*Bir 1 objective-c uitableview ios

我是 iOS 开发的新手。目前我正在阅读本教程http://www.appcoda.com/how-to-handle-row-selection-in-uitableview/。我在阅读这一行时遇到了问题

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
Run Code Online (Sandbox Code Playgroud)

我知道objective-c中的对象是通过以下方式创建的

 classname *objecname = [[classname alloc]init];
Run Code Online (Sandbox Code Playgroud)

我的困惑点在这里 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell这里的对象是如何创建的?请详细说。

Ale*_*der 5

根据您链接到的教程,我假设您正在处理选择一行。当您选择一行时,您可以访问NSIndexPath该行的 ,其中包含两个部分:

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

有了这些信息,让我们分解一下令人困惑的代码: UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

UITableViewCell *cell
Run Code Online (Sandbox Code Playgroud)

这部分声明您的变量。您已选择将其命名为cell。你可以很容易地命名它theCell,像这样:

UITableViewCell *theCell
Run Code Online (Sandbox Code Playgroud)

*意味着您要声明一个指针,它只是对实际对象或表格视图单元格的引用。

[tableView cellForRowAtIndexPath:indexPath]
Run Code Online (Sandbox Code Playgroud)

tableViewUITableView只是选择了。UITableView有一个名为 的方法cellForRowAtIndexPath,该方法的作用是检索UITableView. 在您的情况下,它检索您刚刚选择的行并将对其的引用存储在您的cell变量中。

声明一个对象时,是的,它将采用以下语法:

classname *objecname = [[classname alloc] init];
Run Code Online (Sandbox Code Playgroud)

这里的关键词是new。在处理在 a 中选择行时UITableView,您不想创建新单元格,因为您无法选择不存在的单元格。您想获取用户刚刚选择的单元格。