[英]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
,其中包含两个部分:
有了这些信息,让我们分解混乱的代码: 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.