我创建了一个名为CommaLabel的UILABEL的简单子类,它最终会将逗号插入到数字字符串中,就像苹果公司的计算器一样。编译器说我的实现不完整。愚蠢的问题:缺少什么? (我也不明白我在这里对内存管理要做些什么: - /)(我可能最终只是在视图控制器中实现处理代码,但我只是想知道这看起来怎么样此时......)
#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
答案 0 :(得分:1)
什么不完整?
这在标题中:
-(void)text:(NSString *)text;
在身体中不匹配:
-(NSString *) text{
return super.text;
}
因此,标题中指定为存在的函数不在正文中。这会生成编译器警告,表明实现不完整。
答案 1 :(得分:1)
我认为从一本关于Objective-C和iPhone编程的书籍或教程开始,你会做得很好。无需使用@property
和@synthesize
明确编写这些setter和getter方法。但是,为了解决眼前的问题,你的.h应该是:
-(NSString*)text;
-(void)setText:(NSString*)newText;
和.m应该是:
-(NSString*)text{
return text;
}
-(void)setText:(NSString*)newText {
text = newText;
}
通常最好将方法从.h复制并粘贴到.m以确保它们完全匹配。