繁体   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