我想构建两个应用程序,一个针对iphone进行了优化,另一个针对ipad进行了优化.
这两个应用程序都会调用服务器API调用并为模型对象共享相同的代码,因此我想在iphone和ipad项目之间共享此代码.
我正在使用xCode 4,它具有工作空间的概念(应该允许在项目之间共享代码),但我想知道是否需要为共享代码创建另一个项目.
有没有人这样做并且关心分享最佳实践?
我正在使用OCMock 3.0.2,我通过cocoapods安装了我的测试目标:
platform :ios, '7.0'
xcodeproj 'myProject.xcodeproj'
target :myTestTarget do
pod 'OCMock', '~> 3.0.2'
end
link_with "myTestTarget"
Run Code Online (Sandbox Code Playgroud)
在我的测试文件(myTest.mm)中,我已经包含了OCMock并希望尝试新的就地验证策略,如下所示:
- (void) test_myTest
{
MyObject *obj = [MyObject new];
id robotMock = OCMPartialMock(obj);
[obj testMethod];
// some asserts
OCMVerify([obj _internalMethodToBeCalled]);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止似乎正常.但是,当我尝试运行此特定测试用例时,我收到链接器错误:
Undefined symbols for architecture i386:
"OCMMakeLocation(objc_object*, char const*, int)", referenced from:
-[MyTests test_myTest] in MyTests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我确认已正确引入OCMock并且也引用了OCMLocation.h/m文件.我看到OCMMakeLocation似乎是一个外部函数,但.m文件作为我的pods构建目标中的依赖项目存在,但不知何故它没有被链接.我必须让我的测试成为.mm,因为我包含了一些c ++文件.为什么这会成为OCMock的问题?