很抱歉继续在这里提出基本问题,但我不知道还能去哪里。用滑块,文本字段和按钮写了一些代码,用于递增滑块以演示键值编码。一切都找到了。下一步是使用'property'和'synthesize'代替accessor和setter方法;
#import <Foundation/Foundation.h>
@interface KVCController : NSObject {
int fido;
}
@property(readwrite, assign) int fido;
@end
~~~~~
@implementation KVCController
@synthesize fido;
- (id)init{
self = [super init];
if (self) {
// Initialization code here.
[self setValue:[NSNumber numberWithInt:5] forKey:@"fido"];
NSNumber *n = [self valueForKey:@"fido"];
NSLog(@"fido = %@", n);
}
return self;
}
~~~~~~~
@end
我在@implementation KVCController上得到了一个不完整的实现错误。如果我把'fido'的get和set方法放入其中就可以了。 @synthesize fido;发生第二个错误。它说必须在实现中声明属性。正如我所知,所有内容都被正确地复制出书本中,它看起来就像我所看到的所有其他属性和合成一样。任何人对我错过或做错了什么都有任何想法?
Xcode 4.1会自动创建一个委托类,如果我不处理委托,我通常会忽略该委托类。我为KVC练习创建了自己的类,只是通过适当的修改添加了属性/合成声明并得到了错误。我只是将属性/合成声明放入委托类,将我的IBAction代码移动到适当的位置,重新绑定绑定,并擦除我创建的类,一切正常。属性/合成声明是否需要像委托材料一样对待?
答案 0 :(得分:2)
不完整的实施表示您的标题中可能定义了-(void)something
,而@implementation
中未使用该- (void) dosomething
{
/* blank for now */
}
。确保标题中没有列出任何未使用的方法。如果你这样做,要么从标题中删除它们,要么在你的实现中创建方法。
-(void)dosomething
如果您的实施中有#import <Foundation/Foundation.h>
@interface KVCController : NSObject {
int fido;
}
@property(readwrite, assign) int fido;
- (void) dosomething;
@end
,请在标题中对其进行定义。
{{1}}