-1

编辑添加:在底部解决,见 main.m

我想在 Objective-C 中尝试 FizzBu​​zz 挑战,因为我正在自学这门语言。我很容易在 main.m 中对其进行编码,但我想知道是否有办法通过头文件和实现文件对其进行编码。对于我的 main.m 版本,我有:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        for (int i = 1; i <= 100; i++) {

            if (i % 3 == 0 && i % 5 == 0) {
                NSLog(@"FizzBuzz");
            }

            else  if (i % 3 == 0) {
                NSLog(@"Fizz");
            }

            else if (i % 5 == 0) {
                NSLog(@"Buzz");
            }

            else {
                NSLog(@"%d", i);
            }

        }

    }
    return 0;
}

我想通过头文件和实现文件打印解决方案,但我不确定如何调用 main.m 中的方法(只想以各种方式打印解决方案以练习 Objective-c 的语法和调用规则)。

对于 .h、.m 和 main.m,到目前为止我有这个:

。H

#import <Foundation/Foundation.h>

@interface FizzBuzz : NSObject

-(void)fizzBuzzCalc;

@end 

.m

#import "FizzBuzz.h"

@implementation FizzBuzz

-(void)fizzBuzzCalc
{
for (int i = 1; i <= 100; i++) {

    if (i % 3 == 0 && i % 5 == 0) {
        NSLog(@"FizzBuzz");
    }

    else  if (i % 3 == 0) {
        NSLog(@"Fizz");
    }

    else if (i % 5 == 0) {
        NSLog(@"Buzz");
    }

    else {
        NSLog(@"%d", i);
    }

}

}

@end

主文件

#import <Foundation/Foundation.h>
#import "FizzBuzz.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        FizzBuzz *test = [FizzBuzz new];
        [test fizzBuzzCalc];

        NSLog(@"%@", test);
    }
    return 0;
}

不知道如何调用 main.m 中的 fizzBu​​zz 方法,这是我的问题。

我是 Objective-C 的新手,所以这似乎是一个愚蠢的问题,但我仍在学习。

编辑以添加讨论

不知道为什么,但我删除了 main.m 中的实例/方法调用代码并以相同的方式重写它,Xcode 停止抛出错误。我不知道为什么,但我注意到 Xcode 有时会无缘无故地抛出错误,如果您只是删除代码并将其重新写入,Xcode 将毫无问题地读取它。

4

1 回答 1

0

感谢@FreeNickname 和@Wongzigii 指出我的代码中的一些简单错误,我能够确定为了调用main 中的方法,我只需要编写以下代码:

int main(int argc, const char * argv[]) {
@autoreleasepool {

    FizzBuzz *test = [FizzBuzz new];
    [test fizzBuzzCalc];

    NSLog(@"%@", test);
}
return 0;
}

我想使用 .h 和 .m 文件重写解决方案的原因是因为在 main.m 中编写方法不是 Objective-C 开发的最佳实践,所以我认为这将是一个很好的练习。

再次感谢!

于 2015-02-21T09:37:02.810 回答