2015-12-01 5 views
11

私はSwift2にプロジェクトをアップグレードしています。 多くのエラーを解決した後、プロジェクトをビルドするときにエラーが発生しました。"Objective-C Generated Interface Header Name"のエラー

エラーがObjective-V Generated Interface Headerに位置し、Xcodeのは、ここでは、このエラーをType argument 'CGColorRef' (aka 'struct CGColor *') is neither an Objective-C object nor a block type

印刷さ

エラーが**の間のライン上に印刷され、コードである:

SWIFT_CLASS("_TtC519RadialGradientLayer") 
@interface RadialGradientLayer : CALayer 
**@property (nonatomic, copy) NSArray<CGColorRef> * __nullable colors;** 
@property (nonatomic, copy) NSArray<NSNumber *> * __nullable locations; 
@property (nonatomic) CGPoint center; 
@property (nonatomic) CGFloat startRadius; 
@property (nonatomic) CGFloat endRadius; 
- (nullable instancetype)initWithCoder:(NSCoder * __nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; 
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; 
- (nonnull instancetype)initWithLayer:(id __nonnull)layer OBJC_DESIGNATED_INITIALIZER; 
- (void)drawInContext:(CGContextRef __nonnull)ctx; 
+ (BOOL)needsDisplayForKey:(NSString * __nonnull)key; 
@end 

私はそれがこのクラスへのリンクだと思います。

class RadialGradientLayer: CALayer { 

    var colors: [CGColor]? { 
     didSet { 
      self.setNeedsDisplay() 
     } 
    } 

    var locations: [CGFloat]? { 
     didSet { 
      self.setNeedsDisplay() 
     } 
    } 
    ... 
} 

どこでも答えは見つからなかったので、私はここにいます。

+1

'@nonobjc'を回避しますか?オブジェクトではありませんが、これは関連していると思います:https://forums.developer.apple.com/message/47692#47692。 – orccrusher99

答えて

11

このエラーは、NSArrayにプリミティブ型が含まれていないと伝えようとしています。あなたはこのような何かをしようとすると

あなたが同様のエラーを得るでしょう:あなたの迅速なクラスを作ることになり、この問題を解決するために

@property (nonatomic, strong) NSArray <Int>* intArray; 

片道UIColor代わりにCGColorの配列を保持します。

+0

そして、私はAppKit、 'UIColor'ではなく' NSColor'を推測していますか? –

+1

yup! NSColorが機能する – Casey