【发布时间】:2017-12-18 01:34:06
【问题描述】:
我创建了 2 个框架,它们都使用了(两个)我创建的库。
第一个框架初始化库并完成其所有工作流程。完成第一个框架后,必须启动第二个框架。
但是当第二个要启动时,在初始化库后,使用这两个框架的应用程序崩溃并出现exc_bad_access 错误。
显然该库已正确创建,但如果我注释代码行以在第二个框架中初始化该库,则工作流程将继续(它稍后会崩溃,因为它没有库初始化)。
我做错了什么吗?我应该改用两个单独的库吗?
编辑:
想象一下情况:
框架 A 有这样的方法:start,stop。虽然它可以工作,但它委托给方法:infoFromA,frameworkAFinished。
框架 B 有这个方法:start,stop。虽然它起作用,但它委托给方法:infoFromB,frameworkBFinished。
两个启动方法都初始化提到的静态库(我们称之为problematicLibrary)。
两个框架都提供了一些视图来实现其功能。因此,让我们以应用工作流程为例。
在应用程序视图viewWillAppear 方法中,我仅使用以下方式启动框架A:
[FrameworkA start]; ,这将初始化库并呈现一个视图。使用这个视图(使用我的problematicLibrary),一些信息将被委托给infoFromA 委托方法。并且在所有信息都被委托之后,它会委托给frameworkAFinished。
当 FrameworkA 委托给 frameworkAFinished 时,我启动下一个 Framework:[FrameworkB start]。作为另一个框架,它将初始化库并呈现一个视图。调试时,库的所有初始化都已完成(创建所需对象的实例并创建库的新实例),在呈现视图时,它通过viewDidLoad 方法,然后抛出@987654339 problematicLibrary 初始化行的 @ 错误(之前已经完成并继续呈现视图!!)而无需从视图中进入任何其他方法。
我检查了初始化是否正常,所有变量在初始化之前都在null的值,并且给库对象一个新的内存地址。
【问题讨论】:
标签: ios xcode cocoa-touch frameworks