小编Olo*_*iar的帖子

Xcode服务器,机器人,持续集成和模拟器上的单元测试

我有一个Xcode服务器设置了几个用于iOS项目的机器人(使用Xcode 6.1编译),所有这些都包含单元测试目标

我好像无法在模拟器中运行那些测试; 到目前为止所有尝试都失败了同样的错误(模拟器启动超时):

Test target NAME_OF_MY_TARGET encountered an error (Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at [...])
Run Code Online (Sandbox Code Playgroud)

当然,建议的日志文件路径不是服务器上的有效路径,因此无法检查日志

xcode continuous-integration ios ios-simulator xcode-bots

10
推荐指数
1
解决办法
1467
查看次数

子类化NSCoder,重新创建NSArchiver

NSArchiver 自OS X 10.2起不推荐使用,并且在iOS上不可用AFAIK

在另一方面,NSKeyedArchiver已知缺乏对速度和简明一部分(一些用户报告之间的100倍以上的性能差异NSKeyedArchiverNSArchiver).我要归档的对象主要是NSObject含子类NSMutableArrayNSNumber包含基本类型(主要是和对象double).我不相信开销密钥存档意味着值得.

所以我决定NSCoder在iOS上创建一个串行编码器的子类NSArchiver.

我知道键控档案可能派上用场:向后兼容和其他细节,它可能是我最终会使用的,但我很想知道串行存档可以获得什么样的表现.坦率地说,我认为通过这样做我可以学到很多东西.所以我对替代解决方案感兴趣;

我受到了Cocotron的来源的启发,提供了一个开源的NSArchiver

TLDR:我想要子类化NSCoder来重建NSArchiver


我正在使用ARC,为iOS 6和7编译,现在假设是32位系统.

我现在对引用对象或字符串不感兴趣,我只使用a NSHashTable(weakObjectsHashTable)来防止类名被复制:类将在第一次遇到时被描述,然后通过引用引用.

我使用a NSMutableData来构建存档:

@interface Archiver {
    NSMutableData *_data;
    void *_bytes;
    size_t _position;
    NSHashTable *_classes;
}
@end
Run Code Online (Sandbox Code Playgroud)

基本方法是:

-(void)_expandBuffer:(NSUInteger)length
{
    [_data increaseLengthBy:length];
    _bytes = _data.mutableBytes;
}

-(void)_appendBytes:(const void *)data length:(NSUInteger)length
{
    [self _expandBuffer:length];
    memcpy(_bytes+_position, …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nscoder ios automatic-ref-counting

6
推荐指数
1
解决办法
519
查看次数

将多个静态库编译到单个iOS Framework中

我有一个很大的静态库,我想打包到iOS静态框架中以方便使用.该库实际上是几个.a文件,每个库的逻辑模块一个.

我有编制.a的设备(脂肪文件内置文件armv7,armv7s,arm64和模拟器(与FAT文件)i386,x86_64).

现在,AFAIK,我需要将所有这些文件组合成一个大文件,以便构建一个合适的框架.

使用这里描述的技术(组合静态库),我可以做:

libtool -static -o new.a old1.a old2.a
Run Code Online (Sandbox Code Playgroud)

但显然都old1.aold2.a包括相同的符号.因此,当链接到我的框架时,我得到链接器错误(出于正当理由)duplicate symbols.

一个更正确的方法(从而避免重复的符号)似乎是解压缩.o文件,并将它们组合成一个大.a文件(如何将多个库存档(.a)打包到一个存档文件中?)

ar x old1.a
ar x old2.a
ar rcs new.a *.o
Run Code Online (Sandbox Code Playgroud)

现在,记住,old1.a并且old2.a是胖文件,所以我需要将每个架构分开.

所以这就是我的工作:

lipo old1.a -thin armv7 -output armv7/old1.a
cd armv7; ar x old1.a; cd ..
...
lipo old1.a -thin x86_64 -output x86_64/old1.a
cd x86_64; …
Run Code Online (Sandbox Code Playgroud)

c iphone static-libraries ios libtool-xcode

6
推荐指数
1
解决办法
3607
查看次数

这在C语言中意味着什么?

这在C语言中有什么作用,请用简化的例子解释一下?

void KidLogic::doCommand() 
{  }
Run Code Online (Sandbox Code Playgroud)

c c++

-3
推荐指数
1
解决办法
244
查看次数