Objective C - 方法定义不在@implementation上下文中

时间:2017-11-30 12:07:56

标签: objective-c objective-c++ objective-c-runtime

我的代码:

#import <Foundation/Foundation.h>

-(NSString *) Fibonacci:(int) number{
//Fibonacci Calculations
}

int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Fibonacci Output: %@", Fibonacci(5));
[pool drain];
return 0;
}

我对Objective-C世界很新,因此无法完成上述工作。 面对以下错误:

错误(S): source_file.m:5:1:错误:方法定义不在@implementation上下文中   - (NSString *)lastdigitsFibonacci:(int)number {  ^ source_file.m:6:被先前的错误搞糊涂,拯救

对此有任何帮助将深表感谢。感谢

2 个答案:

答案 0 :(得分:1)

正如@Larme所说, Fibonacci(5)似乎就像一个函数。 - (NSString *)Fibonacci:(int)数字似乎就像一种方法。

因此,要调用Fibonacci(5),您应该将-(NSString *) Fibonacci:(int) number重写为函数。

NSString* Fibonacci(int number) {

  int t1 = 0;
  int t2 = number > 1 ? 1 : 0;
  int tmp;

  for (int i = 3; i <= number; i++) {
    tmp = t2;
    t2 += t1;
    t1 = tmp;
  }

  return [NSString stringWithFormat:@"%lu", t2];
}

int main(int argc, char* argv[]) {
  @autoreleasepool {
    NSLog(@"%@", Fibonacci(999));
  }
}

答案 1 :(得分:1)

#import <Foundation/Foundation.h>

NSString*  Fibonacci(int number) ;

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Fibonacci Output: %@", Fibonacci(5));

    }
    return 0;
}

NSString*  Fibonacci(int number)
{
    //Fibonacci Calculations and return
}