Как создать подкласс UILabel? - PullRequest
2 голосов
/ 28 июня 2011

Я создал простой подкласс UILABEL под названием CommaLabel, который в конечном итоге будет вставлять запятые в числовую строку, как это делает калькулятор Apple. Компилятор говорит, что моя реализация не завершена. Глупый вопрос: чего не хватает? (Я также не понимаю, что я должен делать с управлением памятью здесь: - /) (я, вероятно, в конечном итоге просто реализую код обработки в контроллере представления, но я просто хочу посмотреть, как это будет выглядеть в любом случае в этот момент ...)

#import <Foundation/Foundation.h>


@interface CommaLabel : UILabel

-(void)text:(NSString *)text;
-(void)setText:(NSString*)text;



@end

#import "CommaLabel.h"

@implementation CommaLabel



- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(NSString *) text{

    return super.text; 
}



-(void)setText:text
{

    super.text=text;
}

@end

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Думаю, вам лучше начать с книги или учебника по программированию на Objective-C и iPhone.Нет необходимости явно писать эти методы setter и getter вместо использования @property и @synthesize.Тем не менее, для решения неотложных проблем ваш .h должен читать:

-(NSString*)text;
-(void)setText:(NSString*)newText;

, а .m должен читать:

-(NSString*)text{
    return text;
}

-(void)setText:(NSString*)newText {
    text = newText;
}

Обычно рекомендуется скопировать и вставить методыот .h до .m, чтобы убедиться, что они точно совпадают.

1 голос
/ 28 июня 2011

Что неполного?

Это в шапке:

-(void)text:(NSString *)text;

Не совпадает, в теле:

-(NSString *) text{

    return super.text; 
}

Таким образом, функцияуказано как существующее в шапке не в теле.Это генерирует предупреждение компилятора о том, что реализация не завершена.

...