错误:访问未知的getter方法?

时间:2011-07-22 17:25:04

标签: objective-c cocoa-touch

错误:访问未知的getter方法?

...谢谢

#import <Foundation/Foundation.h>


@interface puppy : NSObject {
    int mack;
    int jack;
}
-(puppy *) waldo: (puppy *) f;
-(void) setMack: (int) m;
-(void) setJack: (int) j;
@end

///////////////////////////////////////////////////

#import "puppy.h"


@implementation puppy
-(void) setJack: (int) j{
    jack = j;
}

-(void) setMack: (int) m{
    mack = m;
}



-(puppy*) waldo: (puppy *) f{   

    return (f.jack + f.mack); // Error: <-- Accessing unknown "jack" getter method
                              // Error: <-- Accessing unknown "mack" getter method
}

3 个答案:

答案 0 :(得分:5)

您尚未为jackmack指定getter方法。您可以使用属性来代替编写自己的getter / setter。

@interface puppy : NSObject {
    int mack;
    int jack;
}
-(puppy *) waldo: (puppy *) f;

// use property
@property (nonatomic, assign) int mack;
@property (nonatomic, assign) int jack;
@end

@implementation puppy

@synthesize jack, mack;

-(puppy*) waldo: (puppy *) f{   
    return (f.jack + f.mack);
}

@end

您现在不需要这些设置方法。吸气剂和二传手都是为你合成的。在问题中没有问到,您应该从方法int返回waldo

答案 1 :(得分:3)

您尚未实施方法jackmack

- (int) jack { return jack; }
- (int) mack { return mack; }

但我建议只使用@property和@synthesize而不使用ivar。

答案 2 :(得分:2)

当您执行f.jack时,它会转换为[f jack]。您需要在界面中添加- (int)jack方法才能使其生效。 措辞不好,我也意味着该方法需要实施。 mack

的情况也是如此

但是说,点符号用于属性。 不适合

如果您为mackjack定义属性并合成这些方法会更容易。