单例模式是常用的模式,但是在单例应用中偶或引发崩溃让人匪夷所思。其实真的是单例引起的吗?未必。但是现象都指向了是单例引起的。今天我亲身经历了看似崩溃在单例上的一个例子,但实则不是,今天做个记录用于今后类似问题分析。

我在一个应用中用单例模式维护网络监听到状态。采用KVO模式来监听 networkStateInstance 的变化,监听者自己定义实现 observeValueForKeyPath 方法。先代码定义如下:

@interface SNNetState : NSObject

// 当前网络状态

@property (nonatomic, assign) SNNetWorkStates networkStateInstance;

+ (SNNetState *)intance;

@end

实现方式如下:

+ (SNNetState *)intance {

static SNNetState* _intance = nil;

static dispatch_once_t netStateOnece;

dispatch_once(&netStateOnece, ^{

_intance = [[SNNetState alloc] init];

});

return _intance;

}

看现象是单例造成的问题,但是后台却告知了我们真想:

IMsViewController 监听者对象已经释放了,当我们的networkStateInstance 变化时IMsViewController 对象已经不存在导致了崩溃。所以我们冤枉了单例,但是好多人却固执死板的认为是单例的造成的。在这有个常用的方法可以帮助大家精确到问题原因。在xcode 中选择Product -》Scheme-》Edit Scheme 弹出编辑框如图设置:即可方便的定位到问题原因。

最新文章

  1. .NET 基础 一步步 一幕幕 [.NET 系列预热]
  2. 手机app开发:浅谈APP登录方式的优劣
  3. Discovering-论文
  4. 个推推送iOS版 常见问题详解
  5. [2011山东ACM省赛] Sequence (动态规划)
  6. C/C++学习----C语言简介
  7. HDU 3371 kruscal/prim求最小生成树 Connect the Cities 大坑大坑
  8. HDU 4063 Aircraft(计算几何)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
  9. (从终端看linux-2)浅析terminal创建时ptmx和pts关系
  10. Android中的动画学习总结
  11. 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
  12. Python基础篇-day11 - 协程
  13. Dictionary排序
  14. Ubuntu 16.04.1 LTS配置LNMP使用wordpress搭建博客
  15. 【剑指offer】【python】面试题2~5
  16. UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
  17. python time模块介绍(日期格式化 时间戳)
  18. [P3625][APIO2009]采油区域 (前缀和)
  19. python之OrderedDict类
  20. [LeetCode&Python] Problem 389. Find the Difference

热门文章

  1. Nginx之伪404( root与alias )
  2. 《java常用设计模式之----单例模式》
  3. Oracle可视化工具连接
  4. Python新手学习raise用法
  5. Dcoker docker: Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).
  6. Java基础篇(03):流程控制语句,和算法应用
  7. shell变量子串
  8. JavaScript 中的模块化
  9. PHP diskfreespace() 函数
  10. HTML - XHTML