Подтвердить что ты не робот

Ошибка в заголовке "Objective-C сгенерированное имя интерфейса"

Я обновляю свой проект до 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()
        }
    }
    ...
}

Я не нашел ответа нигде или даже подсказки, так что я здесь.

4b9b3361

Ответ 1

ошибка пытается сказать вам, что вы не можете содержать NSArray примитивные типы.

вы получите аналогичную ошибку, если попытаетесь сделать что-то вроде этого:

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

Один из способов исправить это будет заключаться в том, чтобы ваш быстрый класс удерживал массив UIColor вместо CGColor.