美文网首页
Swift问题汇总

Swift问题汇总

作者: FunkyRay | 来源:发表于2017-11-10 11:36 被阅读28次
1.在Swift工程中引入动态库,需要添加到Embedded Binaries中,否则会报错;
2.调用有返回值的函数时如果不使用返回值,编译器会发出警告。在该函数前面加上@discardableResult关键字可以消除该警告;
3.Swift 4.0 使用KVC字典转模型时候需要加上@objcMembers关键字才可以有效;
4.在Swift开发中,优先使用let定义常量,如果需要修改再使用变量;
5.枚举中的Int类型可以自动赋值数字,其他类型不可以;
6.类中定义类方法用class修饰,协议中定义类方法用static修饰;
7.Swift中单例的写法:
static let shareInstance : NetworkTools = NetworkTools()
8.关于Swift访问权限
  • internal 内部的:默认情况下所有的类、属性、方法的访问权限都是internal,在本模块(项目、包、target)中可以访问
  • private 私有的:只有在本类中可以访问
  • open 公开的:可以跨模块(项目、包、target)都是可以访问的
  • fileprivate: Swift 3.0 才有的,只有在本文件中可以访问
9.Swift中字符串的优点:
  • String 是一个结构体,性能更高,NSString 是一个OC对象,性能略差
  • String 支持直接遍历
  • 可以进行 StringNSString 之间的无缝转换
  • 字符串长拼接可以直接相加
10.Swift中类的注意点:
  • 定义类中初始化时必须要给属性赋值,而结构体不用
  • 一般不用传参数的函数可以写成计算属性来使用
  • 在类中可以直接写属性名字调用,不用写self.
  • 定义类属性加上关键字static即可,并且类属性只能通过类来调用
  • 进行属性监听的函数:
 willSet { // 监听属性即将发生改变:还没有改变
     print("\(newValue)--\(name)") // 打印新的值
 }
 didSet { // 监听属性已经发生改变:已经改变
     print("\(oldValue)--\(name)") // 打印旧值
 }
  • Swift中析构函数相当于OC中的delloc方法:
  deinit {
    print("该类被释放")
  }
11.Swift中协议的注意点:
  • 协议中的方法默认都是必须实现的,加上@objc optional表示方法是可以不实现的
  • 加上class说明只能被类使用该协议:
@objc protocol sprotProtocol : class {
   @objc optional func playFootball()
}
  • 继承可以和协议一起写在 : 后面:
class smallStudent: NSObject, sprotProtocol {
    
}
12.在extension中给系统的类扩充构造函数,只能扩充便利构造函数
extension UIColor {
   convenience init(r: CGFloat, g: CGFloat, b: CGFloat, alpha: CGFloat = 1.0) {
      self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)
   }
}
13.OC和Swift混编的方法:
  • Swift中引用OC的文件,会默认生成一个工程名-Bridging-Header.h的桥接文件,在其中用OC语法引用需要的类就可以了。
  • 也可以自定义一个.h文件,并添加到该路径中Build Settings -> Swift Compiler -> Objective-C Bridging Header
  • OC中引用Swift的文件,只需要引入工程名-Swift.h的头文件,就可以使用了。
  • 该头文件的路径可以在Build Settings -> Swift Compiler -> Objective-C Generated Interface Header Name中查看。
14.关于Swift中使用CoreFoundation 数据类型:

使用了"类型重映射"机制, 转换成为了能够自动管理内存的对象, 不需要我们手动释放

相关文章

  • swift 和oc混编

    swift&oc混编的一些限制整理Swift项目兼容Objective-C问题汇总

  • Swift问题汇总

    1.在Swift工程中引入动态库,需要添加到Embedded Binaries中,否则会报错; 2.调用有返回值的...

  • Swift问题汇总

    原因是因为qos_class_t在swift2.1后已经实现了Equatable协议,所以没必要在实现Equata...

  • swift学习资料推荐

    Swift语言教程中文文档 swifttoolbox – swifttoolbox swift开发的开源库汇总。 ...

  • Swift 学习笔记(一)

    swift学习笔记第一篇,主要常量,变量,数据类型,条件判断,循环, 函数等基础知识的汇总 大纲汇总 Swift ...

  • swift 开发问题汇总

    1/使用pod安装facebook pop时由于在other linker flag 中没有天际$(inherit...

  • swift开发--问题汇总(一)

    初次使用swift,并且是swift和OC混编,在此,我记录下自己的开发过程,或许可以帮助到大家。 1、swift...

  • Swift OC 混编

    小问题汇总 Swift Framework如何调用无法使用bridge文件,如何OC混编将oc代码封装在一个fra...

  • Swift项目中使用过的第三方框架

    资源:iOS 开发资源汇总Swift.md 整个iOS Repos的排名(Swift): Repos 网络库: A...

  • ROC-AUC 曲线以及PRC曲线

    目录:机器学习常见面试问题汇总问题汇总(1):逻辑回归问题汇总(2):支持向量机问题汇总(3):树模型问题汇总(4...

网友评论

      本文标题:Swift问题汇总

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