Bir sınıf, protokole uymadan önce bir üst sınıftan miras almalıdır. Bunu yapmanın başlıca iki yolu var.
Bir yol, sınıfınızın birlikte miras alması NSObject
ve ona UITableViewDataSource
uymasıdır. Şimdi protokoldeki işlevleri değiştirmek istiyorsanız override
, işlev çağrısından önce bunun gibi anahtar sözcük eklemeniz gerekir.
class CustomDataSource : NSObject, UITableViewDataSource {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
return cell
}
}
Bununla birlikte, bu bazen kodunuzu karmakarışık hale getirir, çünkü uymanız gereken birçok protokol olabilir ve her protokolün birkaç temsilci işlevi olabilir. Bu durumda protokole uyan kodu kullanarak ana sınıftan ayırabilir ve uzantıya anahtar kelime extension
eklemenize gerek kalmaz override
. Yani yukarıdaki kodun eşdeğeri
class CustomDataSource : NSObject{
// Configure the object...
}
extension CustomDataSource: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
return cell
}
}