ios开发中init()方法重复执行,以及实例变量错乱的灵异现象
来源:互联网 发布:iphone录屏软件 编辑:程序博客网 时间:2024/05/29 09:43
刚才发现一个灵异现象,还没找到原因,先记录一下:
我的MainViewController里有2个辅助类的引用:
@implementation YLSMainViewControllerYLSLogoutDelegate *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,避免重名
问题是解决了,但是实在太灵异了……有人知道这个问题的原因吗?
1 0
- ios开发中init()方法重复执行,以及实例变量错乱的灵异现象
- Python循环中的变量作用域的灵异现象
- ios 重复执行方法
- 关于Windows cmd的灵异现象
- 关于idea不能输入的灵异现象
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)
- javascript 灵异现象之 if else 先后执行
- java中实例变量、类变量以及构造方法的加载顺序
- struts2的action中方法重复执行
- 仔细理解iOS成员变量和实例变量以及类方法和实例方法
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS开发中方法延迟执行的几种方式
- iOS 开发中方法延迟执行的几种方式
- ios开发中类方法与实例方法区别 以及self有什么不同
- iOS中按钮取消重复选择执行同一事件的方法
- linux输入子系统
- TestGenerator: unmatched data error
- java jni编程详细步骤及注意细节
- 自动搜索方式的流程
- 黑马程序员:C#中的属性和修饰符
- ios开发中init()方法重复执行,以及实例变量错乱的灵异现象
- 第17周项目1:体会函数参数传递(1)
- Db2Helper
- 17周项目二,1,(数组名做形参)
- HTML5 LocalStorage 本地存储
- 二叉树的遍历
- 火龙果
- 是否发生交换(2)
- 554 Message does not conform to standards