xcode自动生成project-swift.h出错

来源:互联网 发布:淘宝的电脑主机能买吗 编辑:程序博客网 时间:2024/05/16 19:13

最近几天,更新了xcode7,由于工程是swift和OC混编,所以工程会自动生成一个project-swift.h文件。前段时间一直用xcode6.4,一直没问题,更新到7之后,问题来了:生成的文件出错。

出错行报错如下:

/Users/lindow/Library/Developer/Xcode/DerivedData/YsCalendar-hcppxdyfluizfvalogsccedszjxo/Build/Intermediates/YsCalendar.build/Release-iphonesimulator/YsCalendar.build/DerivedSources/YsCalendar-Swift.h:190:1: Expected identifier or '(

仔细看出错行

\Note /// It is currently not possible to use generics with a subclass of NSObject////// <ul><li>This class is a wrapper around an objects that should be cached to disk.</li><li></li><li><code> However, NSKeyedArchiver needs a concrete subclass of NSObject to work correctly/// /// </code></li></ul>SWIFT_CLASS("_TtC10YsCalendar11CacheObject")@interface CacheObject : NSObject <NSCoding>@property (nonatomic,readonly) id__nonnull value;@property (nonatomic,readonly) NSDate * __nonnull expiryDate;


很明显看到的是生成的\Note这一行出错。

开始一筹莫展,不知道为什么会出现这种情况,另外2个同事,和我一样的xcode版本,一样的代码但是编译毫无问题。

那么就开始网上找答案,可惜网上也没用人遇到过。后来遇到一大牛,才解决。

大牛的分析思路如下:

1.首先定位到出错文件,这段是在编译CacheObject.swift这个文件的时候出现的。可以从下面的SWIFT_CLASS中得知

2.打开出错文件,得到内容如下:

import Foundation/** * This class is a wrapper around an objects that should be cached to disk. * * NOTE: It is currently not possible to use generics with a subclass of NSObject * However, NSKeyedArchiver needs a concrete subclass of NSObject to work correctly */class CacheObject : NSObject, NSCoding {let value:AnyObjectlet expiryDate:NSDate

3.定位到出错处,注释的地方

4.得到原因,NOTE为swift的关键字,swift 支持NOTE, DEBUT, TODO, MARK等这些关键字。所以可能是xcode读取注释出错造成

5.更改注释处,删掉或者用///注释皆可

6.问题完美解决


出了问题不要怕,尽管这个问题很怪,但是大牛也只花了20分钟不到就解决了。条理清晰,逻辑缜密的解决问题思路很值得学习


0 0
原创粉丝点击