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

个人网站如何赚钱北京logo设计公司哪家好

个人网站如何赚钱,北京logo设计公司哪家好,服务外包公司是干什么的,词爱站的关键词一、Swift 存储属性和计算属性比较#xff1a; 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举#xff0c;存储属性只能用于类和结构体。存储属性可…一、Swift 存储属性和计算属性比较 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举存储属性只能用于类和结构体。存储属性可以是变量存储属性(用关键字 var 定义)也可以是常量存储属性(用关键字let定义)而计算属性只能用var定义计算属性不直接存储值而是提供一个 getter 和一个可选的setter来间接获取和设置其他属性或变量的值 var age 12var name 小花var kind 法斗//定义计算属性的getter方法该方法的返回值由age、name、kind三个存储属性决定var petInfo:String{get {return this is a pet which name is \(name),age is \(age), kind is \(kind)}set (newInfo){}} 二、inout关键字有什么作用 需要用到inout 关键字,调用函数时加 inout关键字本质是通过地址传递进行值修改的 三、OC和Swift中的protocol OC和SwiftProtocol的共同点 本质都是抽取不同类的共同方法和属性声明供遵循协议的类或对象使用。 都可以通过定义协议实例deleagate来实现委托代理模式。 PS类比继承的概念继承父类的方式比较险隘子类和父类只能为同一基类且方法都有实现需在子类中override并不能把方法和属性完全独立出来且不能多继承。 OC和SwiftProtocol的区别核心 OC中的协议更单纯的受限于委托代理的含义多用于跨类的传值和回调通知。 而Swift是面向协议编程其思想是通过抽取不同类中的相同方法和属性实现模块化减少耦合。 Swift可以通过协议extension扩展缺省实现协议的方法OC不行。 Swift的协议不需要单独声明协议对象id delegate和指定代理delegate self只需要遵循协议的类实现声明或使用协议的缺省实现。 四、Swift 中的 enum 和 OC 中 有什么区别 OC 1.oc的枚举值相当于这个文件中的一个局部变量,只能是整型 2.不同枚举中枚举名称不可以一样在同一文件 Swift 3.枚举里可以写方法 4.枚举的rawValue可以是Float(float也是赋值的后面依次1)或是String或是没有 5.可以用Rank(rawValue: 3)方法创建一个枚举实例 6.枚举实例可以带参数 五、struct和class的区别 1swift中所有值类型struct、enum使用直接派发。 2swift中协议的extensions(类似于OC的分类)使用直接派发初始声明函数使用函数表派发 3swift中class中extensions使用直接派发初始化声明函数使用函数表派发dynamic修饰的函数使用消息派发。 Swift中mutating关键字指的是可变即可修改。用在structure和enumeration中,虽然结构体和枚举可以定义自己的方法但是默认情况下实例方法中是不可以修改值类型的属性。为了能够在实例方法中修改属性值可以在方法定义前添加关键字mutating。 在 Swift 中值类型存放在栈区引用类型存放在堆区。Swift 中典型的有 structenum以及 tuple 都是值类型。 当值类型的变量作为参数被传入函数时相当于创建了新的常量并初始化为传入的变量值该参数的作用域及生命周期仅存在于函数体内。 当引用类型的变量作为参数被传入函数时相当于创建了新的常量并初始化为传入的变量引用当函数体内操作参数指向的数据函数体外也受到了影响 6.当你的项目的代码是 Swift 和 Objective-C 混合开发时你会发现在 Objective-C 的代码里无法调用 Swift 的 Struct。因为要在 Objective-C 里调用 Swift 代码的话对象需要继承于 NSObject。 7.内存分配struct分配在栈中class分配在堆中。struct比class更“轻量级”struct是跑车跑得快class是SUV可以载更多的人和货物 3.struct是值类型Value Type,深拷贝。class是引用类型Reference Type浅拷贝。 六、Swift optional是什么类型的 optional类型是一个枚举类型有两个枚举值 1、None类型 2、Some(Wrapped) 这两个类型决定了optional类型的概念和含义有值或者没有值 1optional.None表示该类型没有值也就是nil。特别声明swift中的nil不在有指针含义而是表示且仅表示optional的.None。 2optional.Some(Wrapped)这是表示有值的情况Some类似于java或者c的泛类型的含义Wrapped 类似是封装的值。 optional的wrap和unwrap 使用optional类型该类型会对赋值过程和取值进行一些处理。 1赋值也被称为装包的过程wrapoptional类型会获取当前值的类型和具体值如int类型的数字100.当一个optional类型被赋值为这个值时其实optional记录了对应的类型someint和值部分wrapped100. 2取值也被称为解包的过程unwrapoptional根据记录的类型some如上面说的int和值部分wrapped100新建一个somewrapped同int100返回给程序 optional是swift特别声明的安全类型在使用过程中如果处理得当的话可以防止以前oc上很多因为数据没值导致的crash。个人还是比较推荐使用的虽然有时候有些解包的过程感觉特别麻烦但这都是一道道安全门阻断了很多crash的诞生。 七、rxswift中请求重试的方法是哪个 1catchError enum ObError: Error {case error1 }let ob1 PublishSubjectString() let ob2 PublishSubject.of(A, B)ob1.catchError { (error) - ObservableString inprint(error)return ob2 }.subscribe { event inprint(event) }.disposed(by: disposeBag) ob1.onNext(111) ob1.onError(ObError.error1) //next(111) //error1 //next(A) //next(B) //completed 2,retry var isFail true let obs ObservableString.create { (ob) - Disposable inob.onNext(成功1)if isFail {ob.onError(ObError.error1)isFail false}ob.onNext(重试成功)ob.onCompleted()return Disposables.create() }obs.retry(2).subscribe { event inprint(event) }.disposed(by: disposeBag)next(成功1) next(成功1) next(重试成功) completed 八、讲解一下Swift中的数据封装 封装主要有两大目的一是为了我们使用数据更加方便二是为了数据保护。 1、Swift 访问修饰符 在 Swift 语言中访问修饰符也分为三类分别是 private、internal、public。 Swift 的访问修饰符从 Xcode6 beta4 才开始支持。 Swift 对访问权限的控制不是基于类的而是基于文件的。 在 Swift 语言中若要设置某一属性的访问权限需在定义属性时加上相应的修饰前缀。 三类修饰符的访问权限 1private 所修饰的属性或者方法只能在当前 Swift 源文件里可以访问在别的文件里访问会出错。 2internal 是默认的访问权限。所修饰的属性或者方法在源代码所在的整个模块都可以访问。如果是框架或者是库代码则在整个框架内部可以访问框架由外部代码所引用时则不可访问。如果是 App 代码在整个 App 内部可以访问。 3public 所修饰的属性或者方法对于引用了该文件或者模块的文件来讲都能访问这些属性和方法。一般来说 public 的出现是为了 API 开发而设置。 Class Person {private var _weight: Int!var weight: Int {get {return _weight}set {_weight newValue}} } 您甚至可以将变量设为公开只读并设为私有读写 class Person {public private(set) var weight: Int } 九、Swift异常捕捉的方法有哪些 // // ViewController.swift // Throws // // Created by fe on 2017/3/7. // Copyright © 2017年 fe. All rights reserved. //import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()//如果在调用系统的方法时后面有throws则说明此方法会抛出异常如果方法会抛出异常则需要我们处理异常//创建正则表达式规则let pattern abcdefg//创建正则表达式队形/*在swift中提供三种处理异常的方式方式一try方式 程序员手动捕捉异常do { let regex try NSRegularExpression(pattern: pattern, options:.caseInsensitive)print(regex)}catch{print(error)}方式二try方式(常用方式) 系统帮助我们处理异常如果有异常则该方法返回nil如果没有异常则该方法返回对应的对象guard (try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)) ! nil else {return}方式三try方式不建议使用非常危险这种方法直接告诉系统没有异常如果有异常则程序会崩溃let regex try! NSRegularExpression(pattern: pattern, options:.caseInsensitive)*/}} 函数中产生的异常只能在函数内部解决开发者也可以使用throws关键字将此函数声明为可抛异常函数此类声明则允许开发者在函数外解决函数内部抛出的异常 ** 异常的捕获与处理 系统为我们提供了三种异常处理的方法1 使用do-catch结构来捕获处理异常、将异常映射为optional值终止异常传递2 使用try?来调用函数可以将异常映射为Optional值3 使用try!来强制终止异常的传递do-catch:do-catch结构是swift语言中处理异常最常用的方法开发者需要将可能抛出的异常的代码放入do结构中如果这部分代码中有抛出异常则会从catch块中寻找对应的异常类型如果找到对应的则会执行此catch块中的异常处理代码. 十、map函数有几种、分别讲解一下 高阶函数一共有下面几个 map对给定数组每一个元素执行闭包中的映射将映射结果放置在数组中返回。 flatMap对给定数组的每一个元素执行闭包中的映射对映射结果进行合并操做而后将合并操做后的结果放置在数组中返回。 compactMap对给定数组的每一个元素执行闭包中的映射将非空的映射结果放置在数组中返回。 filter对给定数组的每一个元素执行闭包中的操做将符合条件的元素放在数组中返回。 reduce对给定数组的每一个元素执行闭包中的操做对元素进行合并并将合并结果返回。
http://www.hkea.cn/news/14336126/

相关文章:

  • 免费做网站建设信用门户网站建设方案
  • 泉州网站建设培训机构中企动力邮箱客户端
  • 广州市品牌网站建设服务机构手机怎么自创网站
  • 软件推荐网站wordpress只保留二级目录
  • 博客自助建站国际财经新闻
  • 自己提供域名做网站如何开发属于自己的小程序
  • 家装行业网站建设网站开发的报告书
  • 四川平台网站建设设计优质高职院校建设专题网站
  • 有关网站建设的视频云安区学校网站建设统计表
  • 做公众号试卷的网站淮南网站建设公司
  • 深圳宝安网站制作公司外贸网站设计设计注意事项
  • 创建网站流程图怎么找外包公司
  • 企业网站模板中文 产品列表泉州企业网站建设
  • 网站建设还流行吗品牌设计流程
  • 北京中兴时代网站建设专业团队建设实施方案
  • 网站建设制作定制wordpress展示页面
  • 网站和数据库微信运营专员
  • 网站建立的方式是什么张家港建设局门户网站
  • 做公司网站,哪个程序用的多保定百度推广排名
  • 用jsp怎么做的购物网站wordpress站点设置使用期限
  • 电子商城开发网站开发四个常见的网络营销方式
  • 网站建设前台功能设计与实现开网站怎么开
  • 网站服务器无法访问邢台网站建设平台
  • 论坛门户网站开发保定网站建设推广
  • 品牌设计网站怎么做wordpress小工具使用
  • 建站用哪个模板好如何快速推广自己的网站
  • 阜蒙县建设学校网站是什么做网页的软件h
  • 泉州做网站便宜做网络优化哪家公司比较好
  • 北京代理网站备案深圳网站推广哪家好
  • 软件开发公司在哪里企业seo解决方案