`

ios开发中init()方法重复执行,以及实例变量错乱的灵异现象

 
阅读更多

刚才发现一个灵异现象,还没找到原因,先记录一下:

我的MainViewController里有2个辅助类的引用:

@implementation YLSMainViewController

YLSLogoutDelegate *logoutDelegate;
YLSBackupDelegate *backupDelegate;
YLSResumeDelegate *resumeDelegate;

然后在viewDidLoad里创建这2个类的实例:

backupDelegate = [YLSBackupDelegate new];
resumeDelegate = [YLSResumeDelegate new];

下面分别是2个类的init()方法:

- (id)init
{
    if(self = [super init]){
        tasks = [NSMutableArray new];
        
        // 备份任务在下面依次添加
        [tasks addObject:[YLSMemberBackupTask new]];
        [tasks addObject:[YLSEmployeeBackupTask new]];
        [tasks addObject:[YLSServiceBackupTask new]];
        [tasks addObject:[YLSShowBackupTask new]];
        [tasks addObject:[YLSBillBackupTask new]];
        [tasks addObject:[YLSUserBackupTask new]];
        [tasks addObject:[YLSEnterpriseBackupTask new]];
    }
    return self;
}

- (id)init
{
    if(self = [super init]){
        tasks = [NSMutableArray new];
        
        // 恢复任务在下面依次添加
        [tasks addObject:[YLSEmployeeResumeTask new]];
    }
    return self;
}

结果运行的时候报异常,应用崩溃:

2013-12-17 16:40:42.306 NailShop[13926:456b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[YLSEmployeeResumeTask doBackup:]: unrecognized selector sent to instance 0xecb8990'


从异常信息看到,BackupDelegate的实例变量tasks里,存放的居然是ResumeDelegate的同名实例变量tasks里的对象……然后DEBUG又发现一个问题,BackupDelegate的init()方法执行了2遍,ResumeDelegate是正常的只执行一遍

反复检查没发现什么问题,最后只好把ResumeDelegate里的那个NSMutableArray的变量名改成resumeTasks,避免重名

问题是解决了,但是实在太灵异了……有人知道这个问题的原因吗?

分享到:
评论

相关推荐

    IOS开发环境搭建和简单实例

    IOS开发环境搭建,和一些IOS开发的简单实例;包括如何注册APPLE ID、开发者帐号,工具的准备等

    学习ios(必看经典)牛人40天精通iOS开发的学习方法

    这是一套从一个对iOS开发感兴趣的学员到iOS...通过本系列课程的学习,希望使一个对iOS开发感兴趣,想从事iOS开发的学员,成为一名真正iOS开发人员,iOS从业者,iOS技术大牛,最重要的是学会解决开发中遇到困难的方法。

    苹果ios开发100个实例源码.zip

    苹果ios开发100个实例源码; 个人信息输入表(支持表单增删) 二维码扫描应用demo 二维码生成器 从GIF动画创建一个动态UIImages 对象 从上往下拉出现加载view,动态加载内容 从上往下拉动态加载 从上往下拉动态加载3 ...

    ios demo,自定义一个类,实例变量和成员变量的实现

    ios demo,自定义一个类,实例变量instance和成员变量的实现

    IOS开发SQLite使用实例

    主要介绍SQLITE在IOS开发中的使用方法。代码包括查询、创建表、更新表等基本操作。

    一个简单的ios开发的实例

    一个简单的ios开发的实例 ,分享它是为了获得另一个实例,呵呵

    ios开发90个实例源码苹果ios系统项目开发学习资料

    ios开发90个实例源码苹果ios系统项目开发学习资料,可供学习参考。

    iOS开发进阶-唐巧.pdf

    第一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实践经验,第三部分介绍iOS 开发中涉及的原理。 如果把成为iOS 开发高手的过程比作武侠小说中的修炼过程的话,工具、实践和理论的学习就分别对应...

    ios开发440个实例源码大全.rar

    ios开发440个实例源码大全.rar

    iOS开发进阶-完整版

    唐巧的《iOS开发进阶》,希望对一些初级的程序员有用

    IOS开发

    在学习 iOS 开发时,需要掌握 Objective-C 语言的基础知识,并且需要了解 Xcode 的使用方法。同时,也可以通过观看相关视频,例如在 www.verycd.com 中下载 iphone 开发的相关视频,来提高学习效率。 iOS 开发需要...

    ios高级开发代码实例

    全面高级软件开发实例代码,免费提供培训资料,适合高级开发人员,你值得拥有,欢迎下载

    ios开发实例WebService

    移动开发ios实例WebService,很不错的实例demo

    iOS开发视频教程

    资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...

    《iOS开发零基础入门教程》(40集)

    资源名称:《iOS开发零基础入门教程》(40集)资源目录:【】传智播客《iOS开发零基础入门教程》1.1【】传智播客《iOS开发零基础入门教程》1.2【】传智播客《iOS开发零基础入门教程》1.3【】传智播客《iOS开发零基础...

    苹果ios开发150个实例源码大全.zip

    苹果ios开发150个实例源码大全: 一个画板,可以选择画笔的颜色 一个简单的page scroll 一个简单的rss阅读器 一个简单的分享到facebookdemo 一个简单的图片编辑器 一个简单的层管理 一个简单的空白页面demo 一个...

    iOS 开发实例

    SUP平台基于iOS开发移动应用实例教程,供学(xiao)习^_^

    IOS开发学习总结objectivec面向对象之——成员变量,模拟类变量,单例模式电脑资料.doc

    IOS 开发学习总结 Objective-C 面向对象之——成员变量、模拟类变量、单例模式 Objective-C 中的变量根据定义位置的不同,可以分为三大类:成员变量、局部变量和全局变量。成员变量是 Objective-C 中的实例变量,不...

    IOS开发 json实例

    IOS开发 json实例,实习调用第三方api,适合初学者

    【学习资料分享】iOS实战开发培训——精通ios开发之3

    与大家分享一些iOS开发的学习... 精通ios开发介绍了iOS中UI设计模式,iOS中详细ui控件介绍,并通过小案例进行分析讲解,并深入介绍iOS应用开发中的数据存储,服务器客户端开发知识,动画,多媒体,map,触摸事件等。

Global site tag (gtag.js) - Google Analytics