Неявное объявление при реализации доступно в xcode - PullRequest
1 голос
/ 02 ноября 2011

Когда я компилирую эти два источника с помощью xcode, я получаю предупреждение и ошибку:

  • Неявное объявление функции shouldHavePlayed.(в строке с комментарием)
  • ошибка при компоновке.

Но если вы посмотрите на код, метод определен в файле .h, файл .hвключение и перестановка методов в файле .m также не решают проблему.

Что не так с этим кодом?

TimerItem.h:

#import <Foundation/Foundation.h>


@interface TimerItem : NSObject {

    BOOL enabled;
    NSTimeInterval startTime;
    NSTimeInterval repeatTime;
    int sound;
    int played;
}

- (void) play;
- (void) resetPlays;
- (BOOL) ShouldPlay : (NSTimeInterval) interval;
- (int) shouldHavePlayed : (NSTimeInterval) interval;

@end

TimerItem.m:

#import "TimerItem.h"


@implementation TimerItem

-(BOOL) ShouldPlay : (NSTimeInterval) interval {
    int should = shouldHavePlayed(interval);//
    return (should > played);
}
-(void) play {
    played++;
}
-(void) resetPlays {
    played = 0;
}
-(int) shouldHavePlayed : (NSTimeInterval) interval
{
    if (interval < startTime) {
        return 0;
    }
    else {
        if (repeatTime > 0.0) {
            return (int) floor((interval-startTime)/repeatTime)+1;
        }
        else {
            return 1;
        }

    }
}

@end

1 Ответ

3 голосов
/ 02 ноября 2011

Вы вызываете это как функция C, а не как сообщение objc.попробуйте это вместо этого:

int should = [self shouldHavePlayed:interval];
...