7

对于我在 Xcode 6 beta 上使用最新的 AFNetworking 获得的属性 streamStatus 和 streamError,如何修复警告“自动属性合成不会合成,因为它是读写的,但它将通过另一个属性只读合成”?

https://github.com/AFNetworking/AFNetworking/blob/master/AFNetworking/AFURLRequestSerialization.m#L733

这是 AFURLRequestSerialization.m 第 733 和 734 行中的相关行:

@interface AFMultipartBodyStream () <NSCopying>
@property (readwrite, nonatomic, assign) NSStreamStatus streamStatus;
@property (readwrite, nonatomic, strong) NSError *streamError;
4

2 回答 2

8

似乎 xcode 6 beta 附带的 clang 版本没有授权重写扩展中的属性,该扩展不是包含这些属性的原始类的直接扩展。

删除:

@property (readwrite, nonatomic, assign) NSStreamStatus streamStatus;
@property (readwrite, nonatomic, strong) NSError *streamError;

并将其替换为:

@interface NSStream ()
@property (readwrite) NSStreamStatus streamStatus;
@property (readwrite, copy) NSError *streamError;
@end

解决了这个问题。

我在 AFNetworking 存储库中打开了一个拉取请求来解决这个问题。

希望这可以帮助。

于 2014-06-11T13:33:15.653 回答
2

我刚刚设置了我的 Xcode 6 来开发 iOS 7 应用程序,它解决了我在使用 AFNetworking 时遇到的自动合成问题。我将构建工具更改为5.1并将 7.1 SDK 移动Developer/SDKsXcode 6. 问题(显然)是我需要在iOS 8明确工作时更改构建工具,但这比在 5 和 6 之间来回切换要好得多。

更改构建工具

  1. 打开 Xcode 首选项 (cmd+,)
  2. 导航到“位置”选项卡
  3. 将“命令行工具”从更改Xcode 6.0Xcode 5.1.1

获取 iOS 7 SDK

  1. 打开终端
  2. cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk /Applications/Xcode6-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk

  3. 重启 Xcode

您现在应该可以设置iOS 7.1为您的基础 SDK

这应该会在短期内解决您的问题,直到所有这些库都针对iOS 8.0新的构建工具进行更新。

于 2014-06-11T18:21:25.933 回答