Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中不支持重载方法_Objective C - Fatal编程技术网

Objective-C中不支持重载方法

Objective-C中不支持重载方法,objective-c,Objective C,我知道Objective-C不支持方法重载。但是,如何理解以下与“tableView”同名的委托方法?对我来说,这些方法似乎是超载的,但我不确定 要使视图控制器指示它是UITableView委托,它必须实现UITableViewDelegate协议。以下是要在视图控制器中实现的常见委托方法: tableView:heightForRowAtIndexPath: tableView:willDisplayCell:forRowAtIndexPath: tableView:didSelectRowA

我知道Objective-C不支持方法重载。但是,如何理解以下与“tableView”同名的委托方法?对我来说,这些方法似乎是超载的,但我不确定

要使视图控制器指示它是UITableView委托,它必须实现UITableViewDelegate协议。以下是要在视图控制器中实现的常见委托方法:

tableView:heightForRowAtIndexPath:
tableView:willDisplayCell:forRowAtIndexPath:
tableView:didSelectRowAtIndexPath:
tableView:didDeselectRowAtIndexPath:
tableView:commitEditingStyle:forRowAtIndexPath:
tableView:canEditRowAtIndexPath:

您列出的所有方法都不同,因为选择器名称包括所有部分,而不仅仅是第一个冒号“
”之前的部分

下面是一个在目标C中尝试方法重载的示例(编译器将拒绝):

请注意,如果存在同名的类方法和实例方法变体,则允许“重载”方法:

- addSomething:(NSObject *) toView:(UIView *)view 
+ addSomething:(NSObject *) toView:(UIView *)view  // this is OK
显然,你需要一个很好的理由来做一些可能会让人困惑的事情

另见这个问题:


您列出的所有方法都不同,因为选择器名称包括所有部分,而不仅仅是第一个冒号“
”之前的部分

下面是一个在目标C中尝试方法重载的示例(编译器将拒绝):

请注意,如果存在同名的类方法和实例方法变体,则允许“重载”方法:

- addSomething:(NSObject *) toView:(UIView *)view 
+ addSomething:(NSObject *) toView:(UIView *)view  // this is OK
显然,你需要一个很好的理由来做一些可能会让人困惑的事情

另见这个问题:


这些都是不同的。整个字符串,包括“:”和下面的所有内容都是方法/选择器名称的一部分。它们都是不同的。整个字符串,包括“:”和下面的所有内容都是方法/选择器名称的一部分。请接受我的回答,谢谢。点击答案左边的勾号,它应该变成绿色。请接受我的答案,谢谢我。点击答案左边的勾号,它应该变成绿色。