internal范围是?
这是一个访问修饰符。这意味着只有同一模块中的代码才能看到/调用这个符号。
internal如果您不使用它,则它是隐含的,并且主要在您制作框架时有意义 - 链接框架的应用程序只能看到框架的public符号,但框架内的代码可以看到框架中internal的其他符号。(并且框架中一种类型的代码看不到private另一种类型中的符号。)
func是声明方法/函数的关键字?
是的。在 Swift 中,“方法”只是func在类型(类、结构、协议、枚举)范围内声明的一个。
tableView是方法的名称吗?
是的……在某种意义上。它通常被称为函数/方法的“基本名称”——开括号之前的部分(。方法的全名,人们在试图明确引用此方法与其他方法时使用的方法,包括所有参数标签:tableView(_:cellForRowAt:). (不过,在 Swift 中,即使是全名也不是明确的,因为函数/方法可以在参数/返回类型上重载。)
通常,函数名称是一个动词短语,描述函数执行的操作或表征结果,但在委托/数据源协议中另有一个长期约定。(并且此方法来自UITableViewDataSource协议。)在此类协议中,函数的“基本名称”用于命名委托某些操作的对象。
是什么_tableView?这是参数的名称吗?如果是这样,为什么我们在cellForRowAt没有下划线的情况下需要下划线,假设cellForRowAt也是一个名称?
不是_tableView,而是_ tableView——注意空格。下划线在 Swift 中通常意味着“忽略这个”。在这种情况下,下划线代替了参数 label,这意味着此方法的调用者不会为第一个参数写一个:
let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)
^ nothing here, just the value being passed as an argument
是UITableView参数类型吗?是IndexPath参数类型吗?
是的。
indexPath里面有什么cellForRowAt indexPath?为什么有2个字?
cellForRowAt是一个参数标签。indexPath是参数的内部(对于您的实现)名称。
参数标签由调用您的函数的任何人使用 - 例如,此调用站点如下所示:
let cell = tableView(myTableView, cellForRowAt: selectedIndexPath)
参数名称是您在函数体内引用该值的方式:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
self.doSomethingWithCellData(indexPath)
...
}
UITableViewCell是返回类型,对吧?
正确的。如果您在此方法的实现中不包含return语句,或者return任何不是 aUITableViewCell的语句,编译器就会感到不安。