一、私有
private修饰的属性、方法、成员变量只能在本类中使用(完全私有)
fileprivate修饰的可以在extension中使用
二、取类型
取一个类的类型,oc中是[类 class],swift中 类.self
1 // UITabBarButton系统的私有类,不能直接使用 2 // if value.isKind(of: UITabBarButton.self){ 3 if value.isKind(of: NSClassFromString("UITabBarButton")!){
三、extension中可以声明计算属性,但不能声明存储属性,和oc中一样
1 // 对UIView的扩展 2 extension UIView{ 3 4 // 扩展计算属性 5 var x:CGFloat{ 6 get{ 7 return frame.origin.x 8 } set{ 9 frame.origin.x = newValue 10 } 11 } 12 }
四、按钮添加点击事件,oc用@,swift用#
button.addTarget(self, action: #selector(composeButtonAction), for: .touchUpInside)
五、代理
1 // 1、定理代理协议,要继承NSObjectProtocol,否则无法使用弱引用 2 protocol WBTabBarDelegate:NSObjectProtocol { 3 func didSelectedComposeButton() 4 } 5 6 // 2、声明代理对象 7 // 使用weak关键字,协议必须要继承NSObjectProtocol 8 weak var wbDelegate:WBTabBarDelegate? 9 10 // 3、执行代理方法 11 // MARK: - 点击事件 12 func composeButtonAction(){ 13 // 执行闭包 14 composeButtonClosure?() 15 16 // 使用代理对象调用代理方法 17 // ?表示判断前面的对象是否为nil,如果为nil那么后面的代码就不执行了 18 wbDelegate?.didSelectedComposeButton() 19 } 20 21 // 4、设置代理对象 22 let wbTabBar = WBTabBar() 23 // 设置代理对象 24 wbTabBar.wbDelegate = self 25 26 // 5、分类中实现代理方法(swift中,如果声明了代理而不去实现代理方法,会报错) 27 // 使用extension可以实现代理方法 28 extension WBMainVC:WBTabBarDelegate{ 29 func didSelectedComposeButton() { 30 print("我是代理对象调用过来的") 31 } 32 }
时间: 2024-10-03 13:22:48