protocol Reusable:class {static var reuseindentifier:string {get} static var nib:uinib? {Get}}extension Reusable {static var reuseindentifier:string {return String (self)} static var nib:uinib? {return nil}}Extension UITableView {func Registerreusablecell<t:uitableviewcell where t:reusable> (_: T.type) {i F Let nib = t.nib {self.registernib (nib, forcellreuseidentifier:t.reuseindentifier)}else { Self.registerclass (T.self, Forcellreuseidentifier:t.reuseindentifier)}} func dequeuereusablecell< T:uitableviewcell where T:reusable> (Indexpath:nsindexpath), T {return Self.dequeuereusablecellwithiden Tifier (T.reuseindentifier, Forindexpath:indexpath) as! T} func Registerreusableheaderfooterview<t:uitableviewheaderfooterview where T:reusable> (_: T.Type) { If let nib = t.nib {self.registernib (nib, Forheaderfooterviewreuseidentifier:t.reuseindentifier) } else {Self.registerclass (t.self, Forheaderfooterviewreuseidentifier:t.reuseindentifier)}} Func Dequeuereusableheaderfooterview<t:uitableviewheaderfooterview where t:reusablE> ()-T? {return Self.dequeuereusableheaderfooterviewwithidentifier (t.reuseindentifier) as! T? }}class Jhtableviewcell:uitableviewcell, reusable {static var nib:uinib? {return uinib (nibname:string (jhtableviewcell.self), Bundle:nil)} override func awakefromnib () { Super.awakefromnib ()} override Func setselected (Selected:bool, Animated:bool) {super.setselected (select Ed, animated:animated)}}
Class Codebasedcustomcell:uitableviewcell, reusable {}
The use of Swift's protocol in Cocoa Collection (i)