错误:访问未知的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
}
答案 0 :(得分:5)
您尚未为jack
和mack
指定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)
您尚未实施方法jack
和mack
。
- (int) jack { return jack; }
- (int) mack { return mack; }
但我建议只使用@property和@synthesize而不使用ivar。
答案 2 :(得分:2)
当您执行f.jack
时,它会转换为[f jack]
。您需要在界面中添加- (int)jack
方法才能使其生效。 措辞不好,我也意味着该方法需要实施。 mack
但是说,点符号用于属性。 不适合。
如果您为mack
和jack
定义属性并合成这些方法会更容易。