更改NSObject定义导致选择器无法识别

时间:2019-04-15 23:55:12

标签: ios objective-c swift nsobject

我正在尝试自定义NSObject以接受其他参数,但是,每当我尝试添加此参数时,我都会得到:

NSInvalidArgumentException: -[TEATimeRange initWithStart:end:fill:]: unrecognized selector sent to instance`

这是.h文件:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface TEATimeRange : NSObject

@property (nonatomic) NSDate *start;
@property (nonatomic) NSDate *end;
@property (nonatomic) IBInspectable UIColor *fill;

+ (instancetype)timeRangeWithStart:(NSDate *)startTime end:(NSDate *)endTime fill:(UIColor *)fillColor;

- (id)initWithStart:(NSDate *)startTime end:(NSDate *)endTime fill:(UIColor *)fillColor;

@end

.m文件:

#import "TEATimeRange.h"

@implementation TEATimeRange

+ (instancetype)timeRangeWithStart:(NSDate *)startTime end:(NSDate *)endTime fill:(UIColor *)fillColor
{
    return [[TEATimeRange alloc] initWithStart:startTime end:endTime fill:fillColor];
}

- (id)initWithStart:(NSDate *)startTime end:(NSDate *)endTime fill:(UIColor *)fillColor
{
    self = [super init];
    if (self) {
        _start = startTime;
        _end = endTime;
        _fill = fillColor;
    }
    return self;
}

@end

调用实例(在Swift中):

TEATimeRange(start: someDateTime, end: someDateTime?.addingTimeInterval(TimeInterval(someTime)), fill: .orange)

如果我删除对fill:的引用,它将按预期运行,所以我对原因感到困惑。

我曾尝试进行SO搜索,但是由于我只有3天的iOS开发经验,因此我找不到任何解决方案,因此对您的帮助将不胜感激。 (即使这是一件愚蠢的事情!)

1 个答案:

答案 0 :(得分:1)

对于访问此页面的未来开发者,我的问题已通过以下解决:

  1. 清洁构建文件夹(产品>清洁构建文件夹或 K
  2. 重新启动Xcode
  3. 重新运行应用程序

请参阅上面@OOPer和@rmaddy的评论,以获取进一步的指导