美文网首页
ios 基础知识整理(四)

ios 基础知识整理(四)

作者: 90后的晨仔 | 来源:发表于2020-12-27 19:28 被阅读0次
1、内存管理语义
  • assign

设置方法只会执行针对“纯量类型”(基本数据类型)的简单赋值操作。

  • strong

此特质表明了属性定义了一种“拥有关系”,该属性设置新值时,设置方法会先保留新值,并释放旧值,然后在将新值设置上去。

  • weak

此特质表明了该属性定义了一种“非拥有关系”。设置新值时,设置方法即不保留新值,也不释放旧值。此特质同 assign类似,然后在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。

  • unsafe_unretained

与assign相同,但是它适用于对象类型,该特质表达一种非拥有关系('不保留'),当目标对象遭到摧毁时,属性值不会自动清空(不安全,unsafe),这一点与weak有区别。

  • copy

此特质所表达的所属关系与strong类似。然后设置方法并不保留新值,而是将其“拷贝”(copy)。

2、NSString类型的属性为什么要用copy进行修饰?

因为传递给设置方法的新值有可能是指向一个NSMutableString 类的实例。这个类是NSString 子类,表示一种可以修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值可能会在对象不知情的情况下遭人更改。所以,这个时候需要拷贝一份“不可变”的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的”,就应该在设置新属性值时拷贝一份。

3、__weak 与 __strong 的区别是什么?

__weak和__strong在Block中的使用

4、socket连接和http连接的区别?
  • http连接:就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉。

  • socket 连接就是所谓的长连接,理论上客户端和服务器端一旦连接起来将不会主动断掉;但是由于各种环境因素可能会使连接断开,比如说:服务器或客户端主机“宕机了”、“网络故障”,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息。(心跳消息格式是开发者自己定义的)。

相关文章

  • ios 基础知识整理(四)

    1、内存管理语义 assign 设置方法只会执行针对“纯量类型”(基本数据类型)的简单赋值操作。 strong 此...

  • iOS动画基础准备

    做开发这么长时间,由于是中途转的iOS ,有许多基础知识掌握的不牢靠,所以最近决定整理整理基础知识,补补之前欠...

  • iOS基础知识整理

    本文从以下几点整理iOS基础的相关知识 一、应用的生命周期二、ViewController的生命周期三、修饰符的使...

  • macOS 开发笔记

    做了几年iOS开发,熟悉了iOS的控件的使用,闲来无事学习整理一下Mac开发基础知识,也好练习一下自己的语言逻辑。...

  • iOS基础知识整理(一)

    链接:https://www.zhihu.com/question/19604641/answer/5630660...

  • ios 基础知识整理(一)

    一、Swift 和OC 如何相互调用? 1.Swift 调用 OC代码 需要创建一个 Target-BriBrid...

  • iOS 底层基础知识整理

    我所理解的内存管理,介绍一下内存管理。答:采用引用计数管理对象内存,当持有该对象,则引用计数加1,不需要了引用计数...

  • ios 基础知识整理(二)

    一、分类(Category) 1.你都用分类在项目中做了哪些事情? 声明私有方法。 分解体积庞大的类文件。 把Fr...

  • ios 基础知识整理(三)

    一、远程推送原理 当设备联网的时候都会与苹果的APNS服务器建立一个长链接,当我们的后台服务器(或者叫:应用程序的...

  • iOS开发小记

    这篇文章主要内容是整理了部分iOS开发基础知识和收集了一些iOS开发中的小技巧。由于平时自己没有养成做笔记的习惯,...

网友评论

      本文标题:ios 基础知识整理(四)

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