当前位置: 首页 > news >正文

郑州网站制作选择乐云seo如何自创网站

郑州网站制作选择乐云seo,如何自创网站,哈尔滨企业网站建设公司,jsp网站开发登陆刚接触Swift,如有不对,欢迎指正 Swift中定义一个基本函数//定义一个函数,接收一个字符串,返回一个String类型的值 func test(name:String) -> String {return ("输出了\(name)")} //通用形式func name(parameters) -…

刚接触Swift,如有不对,欢迎指正

  • Swift中定义一个基本函数
//定义一个函数,接收一个字符串,返回一个String类型的值
func test(name:String) -> String {return ("输出了\(name)")}
//通用形式func name(parameters) -> return type {function body}

 

  • Swift 中基本的闭包函数与OC中Block的相似点
  • 带参闭包
    //OC中Block是这样
    void (^test) (NSString *)=^(NSString *name){NSLog(@"%@",name);};test(@"测试");
    //对应到swift的带参闭包
    
    let test={(_ name:String)->() in// in 后面就是回调之后处理的函数 ,相当于是Block之后的{ }
                print(name)}test("测试")//通用形式
    { 
    (parameters) -> returnType incode
    }

    这里下划线 _ 的作用用来忽略外部參数名,具体可以参考这篇文章http://www.cnblogs.com/bhlsheji/p/4746072.html

     

 

  • OC中带Block参数的函数定义
-(void)loadData:(  void(^)(void) )completetion
{completetion();
}

 

  • Swift中带闭包参数的函数定义
func loadData(completetion: ()->()) -> () {completetion()}
//样式 func: ()->() 

 

  • 举个比较常用的例子,网络数据获取
//OC中Block传值
-(void)loadData:(  void(^)(NSArray *) )completetion
{//这里暂时先忽略掉线程,简单处理,重点在swift闭包NSLog(@"耗时操作");sleep(2);//模拟网络请求
NSArray *arr=@[@"1",@"2"];NSLog(@"主线程回调");completetion(arr); //返回获得的数据

}调用:[self loadData:^(NSArray *callBack){NSLog(@"%@,%@",callBack[0],callBack[1]);}];输出:
2017-03-22 18:48:45.273 tessst[3642:187462] 耗时操作
2017-03-22 18:48:47.345 tessst[3642:187462] 主线程更新
2017-03-22 18:48:47.346 tessst[3642:187462] 1,2//swift中闭包传值  func loadDate(completion: @escaping (_ result : [String])->()) -> () {//这里有一个很重要的参数 @escaping,逃逸闭包
//简单来说就是 闭包在这个函数结束前内被调用,就是非逃逸闭包,调用的地方超过了这函数的范围,叫逃逸闭包
//一般网络请求都是请求后一段时间这个闭包才执行,所以都是逃逸闭包。
// 在Swift3.0中所有的闭包都默认为非逃逸闭包,所以需要用@escaping来修饰DispatchQueue.global().async {print("耗时操作\(Thread.current)")Thread.sleep(forTimeInterval: 2)let json=["1","2"]DispatchQueue.main.async {print("主线程更新\(Thread.current)")completion(json)
//函数在执行完后俩秒,主线程才回调数据,超过了函数的范围,这里就是属于逃逸闭包,如果不用@escaping,编译器是编译不过的
            }}}主函数调用loadDate:loadDate { (callBack) inprint("\(callBack)")}输出值
耗时操作<NSThread: 0x608000069140>{number = 1, name = main}
主线程更新<NSThread: 0x608000069140>{number = 1, name = main}
1,2

 

  • 在Block中经常会有循环引用的情况,闭包中也一样,常用的解决方式有俩种
//第一种
weak var weakwelf=self
//套用oc的方式(__weak typedef(weakself)=self).
//这里要注意,不能用  let  ,因为self可能会释放指向nil,相当于是一个可变值//调可选项发送消息的时候 用 ? 解包 不用 !

pringt("weakself ?.view") 不用" weakself!.view"
//因为强制解包一旦weakself=nil时会崩溃//第二种,在调用时候
//[weak self]标识在{}中所有的self都是弱引用loadDate { [weak self] inprint(self?.view)}

  • 尾随闭包

 尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。可以使用尾随闭包来增强函数的可读性。

    func someFunctionThatTakesAClosure(closure: () -> ()) {// 函数体部分
    }// 以下是不使用尾随闭包进行函数调用
    someFunctionThatTakesAClosure({// 闭包主体部分
    })// 以下是使用尾随闭包进行函数调用
    someFunctionThatTakesAClosure() {// 闭包主体部分}

 

 

续更...

转载于:https://www.cnblogs.com/L-vincen/p/6601657.html

http://www.lbrq.cn/news/2560609.html

相关文章:

  • 做网站和做程序一样吗如何引流被动加好友微信
  • 公共频道18点新闻廊坊优化外包
  • 温州网站排名优化公司牡丹江seo
  • 专业建设网站公司排名市场调研分析报告
  • 天津企业网站策划公司甘肃新站优化
  • 个人设计师网站 青春seo线上培训班
  • 找设计师做网站在线磁力搜索引擎
  • wordpress 标签数长沙seo免费诊断
  • 成都网站创建百度商店应用市场
  • 宜昌平台网站建设免费网络推广网址
  • 设计一个自己的电商网站推广是什么意思
  • 做网站怎么切片学seo哪个培训好
  • wordpress数据库写什么seo对网络推广的作用是什么?
  • 做网站推广价格快速排名程序
  • 网站服务器建设教程在线营销推广
  • 深圳比邻网站建设百度品牌专区
  • 谷歌外贸建站吉林网络公司
  • 网页设计做网站seo培训课程
  • 天长做网站公司多用户建站平台
  • 两学一做网站 新闻合肥网站排名推广
  • 高校档案网站建设的目的是什么意思网络精准营销推广
  • 网络营销如何进行网站推广seo教程免费
  • 漂亮购物网站欣赏怎么优化网站
  • 北京旅游设计网站建设app开发定制
  • 商场网站建设公司seo点击排名软件哪里好
  • 真人做视频网站沈阳高端关键词优化
  • 有哪些是外国人做的网站吗网络营销的方式有哪些
  • 做民宿加盟哪些网站比较好谷歌竞价排名推广公司
  • 怎么给别人做网站百度app下载安装
  • 品牌营销推广策划点击seo软件
  • 注意点:不同对象(更准确地说,不同类型/类)的魔法方法(Magic Methods,也叫特殊方法,以双下划线`__`开头和结尾)通常是不一样的。
  • C++ 指针常量 常量指针
  • PyTorch 中 Tensor 统计学函数及相关概念
  • 除数博弈(动态规划)
  • 电商项目_性能优化_数据同步
  • Transformer架构全解析:搭建AI的“神经网络大厦“