【问题标题】:Error in the "Objective-C Generated Interface Header Name"“Objective-C 生成的接口标头名称”中的错误
【发布时间】:2015-12-01 13:58:22
【问题描述】:

我一直在将我的项目升级到 Swift2。 在解决了很多错误后,我在构建项目时遇到了错误。

错误位于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()
        }
    }
    ...
}

我在任何地方都没有找到任何答案,甚至没有找到任何线索,所以我在这里。

【问题讨论】:

标签: ios swift swift2


【解决方案1】:

错误试图告诉您NSArray 不能包含原始类型。

如果您尝试执行以下操作,您会收到类似的错误:

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

解决此问题的一种方法是让您的 swift 类保存 UIColor 数组,而不是 CGColor。

【讨论】:

  • 我猜对于 AppKit,NSColor 而不是 UIColor?
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多