0%

HTTP缺点

HTTP协议中没有加密机制,所以HTTP通信中有如下缺点:

  • 通信使用明文,内容可能会被窃听
  • 不验证通信方的身份,有可能是伪装的通信方
  • 无法证明报文的完整性(正确性),可能已经被篡改
  • 即使通信内容经过加密处理,加密后的通信内容还是会被看到

什么是HTTPS

HTTP协议中虽然没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全传输协议)的组合使用,加密HTTP的通信内容。用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信了。

阅读全文 »

初始化方法的基本目的是给类型的所有存储属性赋值,以便新实例可用。编译器会强制要求新实例的存储属性有值。如果没有为自定义结构体提供初始化方法,就必须通过默认值或成员初始化方法提供必要的值。

初始化方法一般形式:

1
2
3
4
5
struct CustomType{
init(someValue: SomeType){
//初始化代码
}
}

初始化方法用关键字init表示,没有返回值,也不加function关键字。不同的初始化方法根据参数名及其类型的不同来区分。

阅读全文 »

在TCP/IP协议族中跟HTTP协议有三个密不可分的协议。

IP协议(网络层)

  1. TCP/IP协议族中的IP指的的就是网际协议(不是IP地址哦)。

    IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。

    • IP地址:指明了节点被分配到的地址。
    • MAC地址:指网卡所属的固定地址。

    IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会更改。

  2. 使用ARP协议凭借MAC地址进行通信

    阅读全文 »

子类中访问父类的方法、属性及下标

  • 访问父类的方法:super.someMethod()
  • 访问父类的属性:super.someProperty
  • 访问父类的下标:super[someIndex]
    阅读全文 »

一等公民含义:

In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities.These operations typically include being passed as an argument, returned from a function, and assigned to a variable.

知识点:存储属性、计算属性(setter、getter)、类型属性、属性观察(property observation)、属性访问控制

存储属性

存储属性就是存储在特定类或结构体实例里的常量或变量。只能用于类和结构体。分为变量存储属性和常量存储属性。

定义存储属性的时候指定默认值,也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值。

关于构造过程中常量属性的修改说明:

你可以在构造过程中的任意时间点给常量属性指定一个值,只要在构造过程结束时是一个确定的值。一旦常量属性被赋值,它将永远不可修改。对于类的实例,它的常量属性只能在定义它的类的构造过程中修改,不能在子类中修改。

阅读全文 »

在Swift中,类和结构体既相似又各有不同。

基本知识点:基本语法、类型方法、mutating方法、类和结构体异同点、类和结构体的选择

基本语法

  1. 结构体和类都可以添加属性和方法

    阅读全文 »

CocoaPods的原理,它是将所有的依赖库都放到另一个名为Pods项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。

1. Pods项目最终会编译成一个名为“libPods.a”的文件,主项目只需要依赖这个.a文件即可。
2. 对于资源文件,CocoaPods提供了一个名为“Pods-resources.sh”的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
3. CocoaPods通过一个名为“Pods.xcconfig”的文件来在编译时设置所有的依赖和参数。

闭包是自包含的函数代码块,可以捕获和存储其所在上下文中任意常量和变量的引用,被称为包裹常量和变量。Swift会自动管理在捕获过程中涉及的内存操作。

闭包的形式:

  • 全局函数:一个有名字但不会捕获任何值的闭包
  • 嵌套函数:一个有名字并可以捕获其封闭函数域内值的闭包
  • 闭包表达式:一个利用轻量级语法所写的可以捕获上下文中变量或常量值的匿名闭包
    阅读全文 »

Swift中的ARC机制和Objective-C类似。每次创建一个类的新的实例的时候,ARC会分配一块内存在存储该实例信息,内存中会包含实例的类型信息以及这个实例所有相关的存储型属性的值。当实例不再被使用时,ARC会释放所占用的内存。

鉴定一个实例是否被释放的方法:
在析构函数中添加打印信息,若实例被置为nil后,没有打印析构函数信息,则实例仍然存在引用,没有被销毁。

解决类实例之间的循环强引用

根据使用场景不同有三种解决方法:

  • 弱引用
  • 无主引用
  • 无主引用与隐式解析可选属性结合

弱引用和无主引用都不会保持所引用的实例,从而实现在循环引用中的一个实例引用而另一个实例不保持强引用。

阅读全文 »