我在一个视图控制器中有这段代码:
int randomNumber = (arc4random() % 1) + 6;
因为我会在更多地方需要它,所以我决定将它作为功能。但我是作为 C 函数做的,旧习惯很难改掉。
现在我有这个内容的文件 WOC_Random.c
#include <stdio.h>
#include <stdlib.h> // for arc4random() function
#ifndef WOC_Random_C
#define WOC_Random_C
int randomInt(int startInt, int endInt)
{
int randomNumber = (arc4random() % startInt) + endInt;
return randomNumber;
}
#endif
现在我的视图控制器中的代码是:
int randomNumber = randomInt(1, 6);
但我在链接时遇到问题,这是错误:
duplicate symbol _randomInt in:
/Users/Mac/Library/Developer/Xcode/DerivedData/GuessTheNumber-gjovdrsarctubnbqhczqukvahwgb/Build/Intermediates/GuessTheNumber.build/Debug-iphonesimulator/GuessTheNumber.build/Objects-normal/i386/GTN_FirstViewController.o
/Users/Mac/Library/Developer/Xcode/DerivedData/GuessTheNumber-gjovdrsarctubnbqhczqukvahwgb/Build/Intermediates/GuessTheNumber.build/Debug-iphonesimulator/GuessTheNumber.build/Objects-normal/i386/WOC_Random.o
ld: 1 duplicate symbol for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我确实对问题有模糊的理解。
但是不知道怎么解决?
那么如何解决它,我需要链接器或编译器的一些参数吗?
另外,在这种情况下,当我只有一些简单的函数来实现 iOS 开发的最佳方法时,作为 C 函数还是在 Object C 中作为类函数更好?