属性/合成错误

时间:2011-09-05 19:28:56

标签: objective-c properties

很抱歉继续在这里提出基本问题,但我不知道还能去哪里。用滑块,文本字段和按钮写了一些代码,用于递增滑块以演示键值编码。一切都找到了。下一步是使用'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代码移动到适当的位置,重新绑定绑定,并擦除我创建的类,一切正常。属性/合成声明是否需要像委托材料一样对待?

1 个答案:

答案 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}}