我如何在 Objective-C 中为 FizzBuzz 编写头文件和实现文件?
How would I write a header and implementation file for FizzBuzz in Objective-C?
编辑添加:已在底部解决,请参见main.m
我想在 Objective-C 中尝试 FizzBuzz 挑战,因为我正在自学这门语言。我很容易在 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
main.m
#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 中的 fizzBuzz 方法,这是我的问题。
我是 Objective-C 的新手,所以这似乎是一个愚蠢的问题,但我仍在学习。
编辑以添加讨论
不知道为什么,但我删除了 main.m 中的 instance/method 调用代码并以相同的方式重写了它,并且 Xcode 不再抛出错误。我不知道为什么,但我注意到 Xcode 有时会无缘无故地抛出错误,如果您只是删除代码并重新写回,Xcode 将毫无问题地读取它。
感谢@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 开发中的最佳实践,所以我认为这将是很好的运动。
再次感谢!
编辑添加:已在底部解决,请参见main.m
我想在 Objective-C 中尝试 FizzBuzz 挑战,因为我正在自学这门语言。我很容易在 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
main.m
#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 中的 fizzBuzz 方法,这是我的问题。
我是 Objective-C 的新手,所以这似乎是一个愚蠢的问题,但我仍在学习。
编辑以添加讨论
不知道为什么,但我删除了 main.m 中的 instance/method 调用代码并以相同的方式重写了它,并且 Xcode 不再抛出错误。我不知道为什么,但我注意到 Xcode 有时会无缘无故地抛出错误,如果您只是删除代码并重新写回,Xcode 将毫无问题地读取它。
感谢@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 开发中的最佳实践,所以我认为这将是很好的运动。
再次感谢!