私は経験豊富なC++プログラマが追加読み取り専用プロパティUILabelサブクラスがでUILabelのように見えるのObjective-C
// UINumericlabel.h
@interface UINumericLabel : UILabel
// Returns true if the numeric display contains a decimal point
@property (readonly,nonatomic) BOOL hasDecimalPoint;
@end
// UINumericLabel.m
#import "UINumericLabel.h"
@implementation UINumericLabel
// Returns true if the numeric display contains a decimal point
- (BOOL) hasDecimalPoint;
{
return [self.text rangeOfString:(@".")].location != NSNotFound;
}
@end
でUILabelの私の最初のObjective-Cのサブクラスを作成しようとしています私はインスタンス化UINumericLabelためhasDecimalPointプロパティを参照しようとすると、私はエラーでアボートを取得 2012-02-20 18:25:56.289 Calculator[10380:207] -[UILabel hasDecimalPoint]: unrecognized
セレクタは、デバッガでは、インスタンスに0x684c5c0
を送って私のUINumericLabelプロパティの宣言をUILabelとして示しています。* UINumericLabelサブクラスでUILabelの(id)initをオーバーライドする必要がありますか?それ、どうやったら出来るの?
#import "UINumericLabel.h"
@interface CalculatorViewController : UIViewController <ADBannerViewDelegate>
@property (weak, nonatomic) IBOutlet UINumericLabel *display0;
@end
私は、デバッガでdisplay0P上にカーソルを移動すると、それはUILabel *ないUINumericLabel *
UINumericLabel * display0P = self.display0であると言います。
プロパティが 'UINumericLabel'型であると宣言するだけでは不十分です。サブクラスを使用するには、Interface Builderに指示する必要があります。 – ipmcc
ipmcc - 私の答えに情報を追加しているのか、それとも正しくないのですか?ちょっとした説明をしようとしています。 – Brian
@ Brianの回答は私にとって正しいと思われます。 – danh