首先我们需要明确,对象的内存一般被分配到堆上,基本数据类型和oc数据类型一般被分配在栈上。

如果用assign修饰对象,当对象释放后(因为不存在强引用,离开作用域对象内存可能被回收),指针的地址还是存在的,也就是说指针并没有被置为nil,下次再访问该对象就会造成野指针异常。对象是分配在堆上的,堆上的内存由程序员手动释放。

assign修饰基本数据类型或OC数据类型,因为基本数据类型是分配在栈上的,由系统分配和释放,所以不会造成野指针。

最新文章

  1. SQL Server 中的逻辑读与物理读
  2. Effective Java 读书笔记之一 创建和销毁对象
  3. CentOS 7安装Mysql并设置开机自启动
  4. [转]relative、absolute和float
  5. myeclipse6.0 序列号生成器源码
  6. javascript模板方法模式
  7. 1-3-2 Windows应用程序常用消息
  8. ubuntu14.04 安装 StudioZend12
  9. 【ASP.NET Web API教程】2 创建各种Web API
  10. Oracle dump 分析secondary key
  11. Python自学笔记-with详解
  12. Saiku去掉登录模块
  13. python安装pbkdf2 遇到错误TypeError: __call__() takes exactly 2 arguments (1 given)
  14. docker技术之基本命令
  15. SpringBoot使用Mybatis-PageHelper
  16. 输入年月日判断是当年第几天(if判断)
  17. wait()和notify()的理解与使用
  18. spring cloud: Hystrix(二):简单使用@HystrixCommand的commandProperties配置@HistrixProperty隔离策略
  19. hdu-1041(大数模板)
  20. 获取最后插入的id另外方法

热门文章

  1. C# 关键字 virtual、override和new的用法
  2. 14 Django之Form和Model Form组件
  3. css流程图
  4. 使用高德地图JS获取当前位置和经纬度
  5. C++ STL 之 list
  6. echarts —— tooltip 鼠标悬浮显示提示框属性
  7. 5.Servlet 对象(request-response)
  8. 使用pycharm 编写代码 并在远程主机上运行
  9. axios 简单二次封装
  10. 通过mysql 连接远程数据库时,输入密码后,提示10060错误