美文网首页
Swift心得之学习过程中遇到的问题(二)

Swift心得之学习过程中遇到的问题(二)

作者: 波妞和酱豆子 | 来源:发表于2017-06-13 11:28 被阅读112次

1.在oc中大家都习惯建一个.h全局属性类,把一些常用的属性或者宏定义放在里面 而Swift中也可以如此 并且不用在BuildSettings里的SearchPaths设置路径,直接创建一个类就可以了 很方便的 我把简单常用的几个方法放在这里

//MainScreen Height Width
let SCREEN_WIDTH = UIScreen.main.bounds.size.width
let SCREEN_HEIGHT = UIScreen.main.bounds.size.height

//RGB颜色转换(16进制->10进制)
func RGBCOLOR(rgbValue : Int) -> UIColor {
    
    return UIColor(red: ((CGFloat)((rgbValue & 0xFF0000) >> 16))/255.0, green: ((CGFloat)((rgbValue & 0xFF00) >> 8))/255.0, blue: ((CGFloat)(rgbValue & 0xFF))/255.0, alpha: 1.0)
}

//CGRect
func aFrame(x : CGFloat ,y : CGFloat , width : CGFloat , height : CGFloat) -> CGRect{
    
    return CGRect(x: x, y: y, width: width, height: height)
}

//空数组判断
func IS_ARRAY(array : Array<Any>) -> Bool{

    return array.isEmpty && array.count != 0
}

//列向比例
func WidthScale(number : CGFloat) -> CGFloat{

    return UIScreen.main.bounds.size.width/375*(number)
}
//纵向比例
func HeightScale(number : CGFloat) -> CGFloat{

    return UIScreen.main.bounds.size.width/667*(number)
}

2.oc和swift中异步线程同步线程的区别

oc中的用法

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), code)
dispatch_async(dispatch_get_main_queue(),code)

swift中的用法

DispatchQueue.global().async {code}
DispatchQueue.main.async {code}

对比可以看出 这两个方法区别不是很大 在swift中的语法更简单明了

3.block块的使用

oc中的用法

//B页面
//创建一个带字符串参数的块属性
@property(nonatomic,strong)void(^saveBlock)(NSString *);
//在这里用块传参
!self.saveBlock?:self.saveBlock(dataString);

//A页面
BViewController *bView = [[BViewController alloc]init];
bView.saveBlock = ^(NSString *code){
  //这里接收参数并进行操作
};
[self.navigationController pushViewController:bView animated:YES];

swift中的用法

//B页面
//同样先声明一个带参数的块属性
typealias blockAction = (String) ->()
var blockText : blockAction?
//传参
blockText!(dataString!)

//A页面
let bView = BViewController()
bView.blockText = { (code) -> () in
//这里接收参数并进行操作
}
self.navigationController?.pushViewController(bView, animated: true)

4.桥接
在Swift中有可能会遇到要用oc的代码 就比如常用的FMDB 想在swift的项目中用FMDB就需要用到桥接了
先用Pods导入FMDB库 然后command+n新建一个.h类

B8F2D513-A229-4ED1-9B6B-7D51A8E3B420.png

取名为Bridging方便查找,然后在里面导入FMDB.h的头文件 大概这个样子

//
//  WHBridgingHeader.h
//  Created by 喵哥&... on 2017/6/9.
//

#ifndef WHBridgingHeader_h
#define WHBridgingHeader_h

#import "FMDB.h"

#endif /* WHBridgingHeader_h */

然后在BuildSettings里设置一下路径

969F2A53-E116-4DA6-AFC5-845BE91C699F.png

OK 收工。

相关文章

网友评论

      本文标题:Swift心得之学习过程中遇到的问题(二)

      本文链接:https://www.haomeiwen.com/subject/qmtrqxtx.html