大前端开发iOS DevelopmentiOS Developer

一个iOS的Framework和Bundle的使用问题

2018-01-18  本文已影响131人  link_hui

今天使用一个第三方开发的库从pod引入方式改为源码导入,由于没有提供podspec文件按照惯例步骤如下:

  1. Podfile文件去掉引用,执行pod update

  2. xcodeproj文件添加到workspace中。编译出framework文件


  3. 在主target中的Build Phases->Link binary with libraries中添加对应的framework


  4. clean之后编译运行。遇到crash



    可以看到因为url为nil,导致[NSBundle bundleWithURL:] crash

5.查看发现原来对应的bundle文件没有添加到target中。添加前面第三方proj中product中的bundle文件后解决。


最后关于bundle的制作和使用可以参考bundle的生成和使用

附:查问题的过程中还遇到堆栈显示不完整的问题。整个crash堆栈中只有dispatch相关的调用。好在apple开源了GCD的源码.下载libdispatch
可以找到SIGABRT抛出的地方objc_terminate。应该是block执行有异常了。

void
_dispatch_client_callout(void *ctxt, dispatch_function_t f)
{
    @try {
        return f(ctxt);
    }
    @catch (...) {
        objc_terminate();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读