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

最近几天,更新了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
///
/// 
  • This class is a wrapper around an objects that should be cached to disk.
  • However, NSKeyedArchiver needs a concrete subclass of NSObject to work correctly /// ///
SWIFT_CLASS("_TtC10YsCalendar11CacheObject") @interface CacheObject : NSObject @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:AnyObject
let expiryDate:NSDate

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

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

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

6.问题完美解决


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


你可能感兴趣的:(swift,swift,xcode,注释)