【问题标题】:I'm getting compiler warnings with AFNetworking, but shouldn't be. How do I fix it?我收到 AFNetworking 的编译器警告,但不应该。我如何解决它?
【发布时间】:2015-12-23 04:05:09
【问题描述】:

我在当前升级到 iOS 6 的项目中使用了最出色的 AFNetworking 库。我正在升级中,减少编译时收到的一堆警告iOS 6 SDK。

AFNetworking 在所有目标中都给了我两个警告:

SystemConfiguration framework not found in project, or not included in
precompiled header. Network reachability functionality will not be available.

MobileCoreServices framework not found in project, or not included in
precompiled header. Automatic MIME type detection when uploading files
in multipart requests will not be available.

事情是这样的:这两个libraries 添加到我所有的targets 中。我想以正确的方式摆脱这些警告;我不会修改AFNetworking 文件。我怀疑这是 Xcode 很傻。诚然,这是一件小事,但留下警告是不好的做法。

如何删除这些警告?

我已尝试重新启动 Xcode 并进行清理。两者都不起作用。

【问题讨论】:

    标签: xcode afnetworking


    【解决方案1】:

    我不确定您是否在使用 CocoaPods,但这是一个已知问题,正在 AFNetworking Github page 上跟踪。

    我能够通过将正确的导入语句直接添加到我的 `PROJECTNAME-Prefix.pch 来解决这个问题,我将其更改为这个。

    #ifdef __OBJC__
      #import <UIKit/UIKit.h>
      #import <SystemConfiguration/SystemConfiguration.h>
      #import <MobileCoreServices/MobileCoreServices.h>
    #endif
    

    如果您有其他内容,请不要删除它。只需添加 SystemConfiguration 和 MobileCoreServices 的导入即可。

    对于 OS X:

    #ifdef __OBJC__
        #import <Cocoa/Cocoa.h>
        #import <SystemConfiguration/SystemConfiguration.h>
        #import <CoreServices/CoreServices.h>
    #endif
    

    【讨论】:

    • 我没有使用 CocoaPods,只是直接从 github 克隆。我为其他库添加了 MobileCoreServices 和 SystemConfiguration,因此不必为 AFNetworking 添加它们。
    • 将我发布的导入语句添加到 Xcode 项目的 Supporting Files 组中的 .pch 文件应该可以工作。我刚刚验证了这个修复了空白项目中的警告。
    • 谢谢你。有时,当警告仍在问题导航器中时,您必须删除“~/Library/Xcode/Developer/DerivedData”中当前项目的派生数据。然后清理并构建。应该可以正常工作。
    • @horseshoe7 这应该适用于 CocoaPods,您需要将其放入您自己的 .pch 文件中,当从生成的静态库链接时,它会消除警告
    • 但警告在 pods 项目中...哦等等,我的错。它在 AFIncrementalStore pod 目标中...谢谢!
    【解决方案2】:

    如果您使用的是 swift:Xcode 在编译 Prefix.pch 文件之前编译 Swift 代码,因此即使您的 .pch 文件中有正确的导入,您也会收到这些警告。我发现的最佳解决方案是在导入 AFNetworking 之前将它们添加到项目的 Bridging-Header.h 文件中:

    #import <SystemConfiguration/SystemConfiguration.h>
    #import <MobileCoreServices/MobileCoreServices.h>
    #import "AFNetworking.h"
    

    【讨论】:

    • 这对我有用。关键是在 PCH 和桥接头中都有导入。顺序很重要,因此导入必须先于 #import "AFNetworking.h"
    【解决方案3】:

    这个问题已经得到解答,但是,如果您正在开发一个命令行工具,可能会同时为 OS X 和 iOS(肯定不是 App Store)编译,您可以添加以下内容:

    #ifdef __OBJC__
        #import <Foundation/Foundation.h>
        #import <SystemConfiguration/SystemConfiguration.h>
    
        #if TARGET_OS_IPHONE
            #import <MobileCoreServices/MobileCoreServices.h>
        #elif TARGET_OS_MAC
            #import <CoreServices/CoreServices.h>
        #endif
    
    #endif
    

    通过评估您正在编译的目标,它将包含正确的文件。

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多