超类中的Objective C setter调用而不是子类

时间:2013-02-25 11:52:26

标签: objective-c override nsnull

我正在尝试子类化UILabel,因此setter setText检查null以避免这种情况,如果提供的参数是NSNULL:     [NSNull isEqualToString:]:无法识别的选择器发送到实例

代码如下。我在调试器中走了进去,它没有进入我打电话给的新的setter:

    [someSubClassLabel setText:someValueWhichMayBeNull];

其中someSubClassLabel是UILabelWithNULLHandler。

中的.h

#import <UIKit/UIKit.h>
@interface UILabelWithNULLHandler : UILabel
- (void) setText:(NSString *) newText;
@end

在.m:

中定义方法
- (void) setText:(NSString *) newText
{
    if(![newText isKindOfClass:[NSNull class]])
    {
        super.text = newText;
    }
    else
    {
        super.text = @"";
    }
}

编辑: 我想我可以添加代码来处理nil,但是目前我正在处理我从NSDictionary中提取的NSNUll。

1 个答案:

答案 0 :(得分:0)

@Hot Licks是对的。我的故事板里还有一个UILabel。需要在Custom Class。下的Identity Inspector中设置新的类名。