首页 > 代码库 > Swift使用注意

Swift使用注意

一、私有

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 }

 

Swift使用注意