我一直在将我的项目升级到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* __nullable colors;** @property (nonatomic, copy) NSArray * __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() } } ... }
我没有找到任何答案,甚至没有任何线索,所以我在这里.
错误试图告诉你,你不能有一个NSArray
包含原始类型.
如果您尝试执行以下操作,您会收到类似的错误:
@property (nonatomic, strong) NSArray* intArray;
解决这个问题的一种方法是让你的swift类保持一个数组,UIColor
而不是CGColor
.