使用BlocksKit 1.8.1 / Xcode 4.5 / iOS编译警告

时间:2012-11-27 13:04:58

标签: iphone objective-c ios xcode objective-c-blocks

在Xcode 4.5中使用带有iOS项目的BlocksKit 1.8.1时,我收到警告。

警告是:

enter image description here

详情如下:

  

GenerateDSYMFile   /Users/john/Library/Developer/Xcode/DerivedData/AppName-epvlodroaifdsbacdbbxnlhuptrh/Build/Products/Debug-iphoneos/AppName.app.dSYM   /Users/john/Library/Developer/Xcode/DerivedData/AppName-epvlodroaifdsbacdbbxnlhuptrh/Build/Products/Debug-iphoneos/AppName.app/AppName       cd / Users / john / Documents / AppName_iphone       SETENV PATH“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/ usr / sbin目录:/ sbin目录”       /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil   /Users/john/Library/Developer/Xcode/DerivedData/AppName-epvlodroaifdsbacdbbxnlhuptrh/Build/Products/Debug-iphoneos/AppName.app/AppName   -o /Users/john/Library/Developer/Xcode/DerivedData/AppName-epvlodroaifdsbacdbbxnlhuptrh/Build/Products/Debug-iphoneos/AppName.app.dSYM

使用设备目标进行编译时。

当使用模拟器作为目标进行编译时,警告会有所不同:

enter image description here

我按照Git页面上的说明操作:

  • 下载BlocksKit版本。
  • 将libBlocksKit.a和Headers移动到项目的文件夹中,最好是“Vendor”之类的子文件夹。
  • 在“Build Phases”中,将libBlocksKit.a拖到目标的“Link Binary With Libraries”构建阶段。
  • 在目标或项目的构建设置中,将“Other Linker Flags”更改为-ObjC -all_load。确保您的应用与CoreGraphics,Foundation,MessageUI和UIKit相关联。
  • 将“标题搜索路径”更改(或添加)到BlocksKit标题的相对路径,例如$(SRCROOT)/ Vendor / Headers。
  • 在项目的前缀标题中插入#import`。

有什么不对?

2 个答案:

答案 0 :(得分:1)

我有相同的警告,找不到原因,但找到了临时解决方案。

可能相关:

在BlocksKit 1.8.1中链接似乎有更多问题:我的应用程序编译并正确用于开发构建(尽管显示了这些警告)。但是,当我为Ad Hoc部署构建存档时,libBlocksKit显然是 not 链接,因为当使用以下崩溃日志调用其中一个BlocksKit方法时,应用程序崩溃:

Last Exception Backtrace:
0   CoreFoundation                  0x3b2783e2 __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x3a2d195e objc_exception_throw + 26
2   CoreFoundation                  0x3b27bdbc +[NSObject(NSObject) doesNotRecognizeSelector:] + 180
3   CoreFoundation                  0x3b27a648 ___forwarding___ + 388
4   CoreFoundation                  0x3b1d2204 _CF_forwarding_prep_0 + 20

对于所有构建配置,我的其他链接器标志设置为-ObjC。 (我删除-all_load,因为这会导致我正在使用的AdMob库出现“重复符号”。)

临时解决方案:

我切换回了BlocksKit的旧分支: https://github.com/zwaldowski/BlocksKit 并使用链接器标志-ObjC。 这个分支已弃用,但对我来说没有任何上述所有构建配置的警告。

答案 1 :(得分:0)

似乎这是一个将在下一个BlocksKit版本中修复的错误:

https://github.com/pandamonia/BlocksKit/issues/108