看看XCTest和Xcode 5单元测试,而不是看看如何在Xcode 5中的Instruments下运行我的单元测试......
具体来说,我想在测试期间寻找泄漏(在这种情况下不必自动化,但显然有用).
可能?
之前已经提出过这个问题,但是对各种开发工具的文档进行深入研究似乎是可能的,这一点并不明显.
动机:制作一个供其他iOS开发人员使用的静态库.如果导出库中的某些符号会导致问题,所以我希望将它们作为仅内部符号.使用动态库这很简单,只需使用use -exported_symbols_list libtool(ld)参数并列出您想要公开的参数. libtool文档不允许这个参数用于静态库.
Library有几个ObjectiveC .m文件,它们使用彼此的代码.只需要将组中的一个类公开给最终的.a静态库文件的用户.
尝试libtool -exported_symbols_list publicsymbols.exp但静态库libtool不支持该参数-static.
不能使符号与属性私有(如果它甚至可以工作),因为组中的其他.m文件需要它们.
看起来ld可以采取几个.o文件并将它们链接到一个新的.o文件(通过-r参数),并且它没有参数的"仅动态"免责声明-exported_symbols_list(可能只是不清楚文档......).
就像测试我用Xcode构建我的项目所以我已经制作了所有.o文件,然后尝试调用ld命令行,如下所示:
ld -r -x -all_load -static -arch armv6 -syslibroot {path}
-filelist /Users/Dad/ABCsdk/iphone-ABClib/build/ABCLib.build/Distribution-iphoneos/ABCLib-device.build/Objects-normal/armv6/ABCsdk.LinkFileList
-exported_symbols_list {exp file path} -o outputfile.o
Run Code Online (Sandbox Code Playgroud)
其中{path}类型的东西有很长的路径到那里的适当位置.
但我得到如下错误:
/ usr/bin/ld_classic:/Users/Dad/ABCsdk/iphone-ABClib/build/ABCLib.build/Distribution-iphoneos/ABCLib-device.build/Objects-normal/armv6/ABCmain.o不兼容,文件包含不受支持的类型加载命令0中的第3节(_ TEXT, _picsymbolstub4)(必须指定要使用的"-dynamic")
那里似乎有些不对劲......
谁知道一个聪明的方法来使这项工作?谢谢.
Apple的方法为什么不被NSError**宣布为NSError * __autoreleasing *?
在过渡到ARC发行说明似乎表明,他们应该是(?).
例如,NSFileManager.h中的所有例程.但我实际上并没有看到任何 Apple标题使用过渡到ARC发行说明中所述的内容:
and the method declaration would typically be:
-(BOOL)performOperationWithError:(NSError * __autoreleasing *)error;
Run Code Online (Sandbox Code Playgroud)
可能是因为支持所有NSError * error = nil;声明所暗示的遗留代码库,strong所以如果Apple放在__autoreleasing那里它会导致__autoreleasing每次都创建一个临时局部变量?我唯一能想到的就是.