Ошибка: доступ к неизвестному методу получения? - PullRequest
0 голосов
/ 22 июля 2011

Ошибка: доступ к неизвестному методу получения?

Спасибо ...

#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 ]

5 голосов
/ 22 июля 2011

Вы не указали метод получения для jack и mack. Вместо того, чтобы писать собственный метод получения / установки, вы можете использовать свойство для них.

@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.

3 голосов
/ 22 июля 2011

Вы не реализовали методы jack и mack.

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

Но я бы порекомендовал просто использовать @property и @synthesize без ivar.

2 голосов
/ 22 июля 2011

Когда вы делаете f.jack, это переводится как [f jack].Вам нужно добавить метод - (int)jack в ваш интерфейс, чтобы это работало. Плохо сформулированный, возможно, я также имел в виду, что метод должен быть реализован.То же самое относится и к mack

Но, тем не менее, точечная запись предназначена для свойств. Не подходит .

Было бы проще, если бы вы определили свойства для mack и jack и синтезировали эти методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...