我正在制作一个应用程序与其他团队一起工作,其他团队部署一个框架给我。我将这些框架导入到我的应用程序中。
我试着用我的测试设备来构建,它们是iPhone 8 Plus(iOS 11),iPhone 7 Plus(iOS 10),two iPhone X (iOS 11),iPhone Pro (iOS 11)上面的设备也工作正常。
但不适用于iPhone 5c (iOS 9.3) iPad Mini 1 (iOS 9.3)。他们只使用Xcode的第一次构建,在断开电缆后,第二次打开应用程序,它总是在启动镜像后崩溃。
appdelegate.h中的代码
@property (strong, nonatomic) FrameworkViewController *InfoVC;
@property (strong, nonatomic) MyNavigationViewController *conNav;初始化appdelegate.m中的代码
NSBundle *myframeworkBundle = [NSBundle bundleForClass:[FrameworkManager class]];
InfoVC = [[FrameworkViewController alloc]initWithNibName:@"FrameworkViewController" bundle:myframeworkBundle];
conNav = [[MyNavigationViewController alloc] initWithRootViewController:InfoVC];
InfoVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"leftMenu_icon.png"] style:UIBarButtonItemStylePlain
target:self
action:@selector(myfunction:)];
conNav.tabBarItem.title=@"TAP_Information";
conNav.tabBarItem.image=[UIImage imageNamed:@"tab_info.png"];我添加了一个断点,并用那些iPhone 5c和Mini 1得到了InfoVC返回值为零。但是这些works设备将显示一个地址。我认为infoVC为nil,我尝试将leftbarButtonItem设置为nil对象以导致崩溃,但如何解决此问题?我尝试添加一个main_queue似乎不起作用。
-更新
我尝试添加一些NSLog来查看这些nil对象,我发现NSlog可以打印出一个有效的地址,nil是由应用程序崩溃引起的。现在它只在iOS 9设备上随机崩溃。所有的崩溃都是EXC_BAD_ACCESS (code=1,address=0x0)。
发布于 2018-07-04 18:28:09
如果您已获得.framework文件,我建议您使用以下函数之一搜索您的NSBundle:
+ (NSBundle *)bundleWithIdentifier:(NSString *)identifier
+ (instancetype)bundleWithPath:(NSString *)path
如documentation中所述:
此方法通常由框架和插件在运行时用来定位它们自己的包。这种方法可能比尝试使用bundleForClass:方法定位捆绑包更有效。但是,如果对具有指定标识符的已加载和缓存的包的初始查找失败,此方法将使用可能耗时的试探法来尝试定位该包。作为优化,您可以使用bundleWithPath:或bundleWithURL:方法来避免文件系统遍历。
https://stackoverflow.com/questions/51168636
复制相似问题