小编nev*_*vyn的帖子

如何在启用Bitcode的情况下xcodebuild一个静态库?

Xcode 7引入了Bitcode,这是一种LLVM中间二进制文件,这意味着Apple的服务器可以在不参与的情况下为不同的架构重新编译我的应用程序.

在Lookback中,我使用我们的库分发静态存档框架.似乎当你用"Build&Archive"构建任何东西时,bitcode实际上并没有发布到我的库中,任何在我们的应用程序中与我的库链接并尝试使用Bitcode进行构建和存档的人将获得其中一个两个警告:

  • ld: 'Lookback(Lookback.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. (如果lib是使用Xcode 6构建的)
  • ld: warning: full bitcode bundle could not be generated because 'Lookback(Lookback.o)' was built only with bitcode marker. The library must be generated from Xcode archive build with bitcode enabled (Xcode setting ENABLE_BITCODE) (如果lib是使用带有正常xcodebuild的Xcode 7构建的)

我有一个构建脚本,构建一个设备+模拟器通用二进制文件,所以我不能使用Build&Archive,而是xcodebuild从我的脚本从命令行运行.如何xcodebuild生成适当的bitcode启用库?

xcode ios xcode7 bitcode

82
推荐指数
4
解决办法
4万
查看次数

使用Flurry Crash Analytics对iOS 7崩溃报告进行符号化

我最近为我的应用推出了iOS 7更新,并实现了Flurry Analytics并启用了崩溃报告.我最近注意到一些用户遇到了崩溃.使用Flurry我可以在应用程序崩溃时检索堆栈跟踪以追踪问题.
好吧,我当然熟悉崩溃报告,并且已经修复了之前使用它们的错误,从iTunes Connect或邮件中获取它们并简单地在Xcode中对它们进行符号化.然而,我没有成功使用Flurry做到这一点.

我尝试了什么:
在Flurry上查看堆栈跟踪时,这就是我得到的: 乱舞堆栈跟踪 正如您所看到的,很多线条都是完美的象征,其他线条则象征着<redacted>.一些研究告诉我Apple在iOS 6和7中剥离了很多调试符号.
我尝试的第一件事是上传我自己的dSYM文件.Flurry报告已保存dSYM文件,并使用dSYM文件再次对崩溃报告进行符号化.然而,堆栈跟踪仍然与没有dSYM完全相同.
没问题,我想,我可以尝试下载崩溃报告并使用Xcode对其进行符号化.点击下载为我提供了一个文件(没有扩展名,所以我将其重命名为.crash):

Hardware Model:      iPhone3,1
Process:         RadioPlayer [2965]
Path:            /var/mobile/Applications/E4DD7DA6-4450-4538-A1E2-AE23139FAC10/RadioPlayer.app/RadioPlayer
Identifier:      *******
Version:         1.2.0
Code Type:       ARM
Parent Process:  launchd [1]

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x548a000
Crashed Thread:  2

Thread 0:
0   libsystem_kernel.dylib              0x3aa67a8c _mach_msg_trap + 20
1   CoreFoundation                      0x3015e7cb <redacted> + 154
2   CoreFoundation                      0x3015cf37 <redacted> + 854
3   CoreFoundation                      0x300c7ce7 _CFRunLoopRunSpecific + 522
4   CoreFoundation                      0x300c7acb _CFRunLoopRunInMode + 106
5 …
Run Code Online (Sandbox Code Playgroud)

xcode crash-reports flurry ios

10
推荐指数
2
解决办法
5930
查看次数

滚动时自定义UIControl获取touchesCancelled; 如何禁用滚动?

我正在写一个UISwitch替代品(带有自定义图形).我已经覆盖了touchesMoved和朋友,因此您可以在"是"和"否"之间拖动窗口小部件,就像使用UISwitch一样.

如果将它放在滚动视图中,如果用户将手指移动到对角线而不是完全水平位置,则触摸将被取消,并且滚动踢入.我注意到UISwitch和UIButton没有表现出这种行为,并且在操作这些控件时滚动从不开始.

我如何告诉UIKit我想要对这些触摸进行独占控制,实际上禁用了touchesBegan中的滚动并启用了滚动结束/取消?我敢肯定有一些东西很明显,但我已经通过页眉和文档UIControl,UIResponder,UIView的和UIScrollView的看了看,没有发现任何东西.

注意:我不想创建UIScrollView子类; 我无法想象,作为正确的解决方案,控制应该是完全独立的.

iphone uiscrollview uikit uicontrol

7
推荐指数
1
解决办法
2248
查看次数

Rails:正确路由命名空间资源

如果您将资源映射添加到routes.rbin Rails 2.3中的命名空间,那么如何使link_to(以及form_for等)理解它应该获取命名空间控制器而不是根命名空间中的控制器?

例如...

有了这个routes.rb:

map.namespace :admin do |admin|
  admin.resources :opt_in_users
end
Run Code Online (Sandbox Code Playgroud)

这在视图中:

<%= link_to @anOptInUser %>
Run Code Online (Sandbox Code Playgroud)

link_to应该使用link_for_admin_opt_in_user,而是它尝试使用link_for_opt_in_user,这将失败.

ruby-on-rails

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

AVCaptureMetaDataOutput:检测超过四(4)个QR码

TN2325说:

AVCaptureMetadataOutput可以检测帧中的多个二维条形码吗?是.有四个条形码限制.

在我的应用程序中,我使用QR码作为基准跟踪器来检测摄像机看到的场景中的物体位置(见下文),并且4个同时对象是不够的.在我开始整合其他一些QR跟踪代码之前,有没有人找到一种让AVCaptureMetadataOutput检测超过4个跟踪器的方法?

示例场景 例

尝试和失败的方法

我尝试将屏幕划分为10个区域(重叠50%),然后每0.2秒读取一个矩形,并加入每个区域的结果.可怕:缓慢,失去对标记的跟踪,标记始终在区域边界上.该方法的代码:https://gist.github.com/nevyn/7153525

我尝试制作十个AVCaptureMetadataOutput并将它们添加到同一个会话中.不起作用:您在会话中只能有一种类型的输出.

我尝试使用MetadataOutput制作10个AVCaptureSessions.不起作用:你的内存不足.

第三方图书馆

因此,放弃了AVCaptureMetadataOutput,我尝试了一些第三方库.所有失败:

  • ZXingObjC仅支持场景中的单个代码.
  • ZBar在扫描代码方面不够好; 只有当代码占据屏幕的大部分时才能检测到它.
  • Studierstube Tracker看起来很棒,但似乎甚至没有商业用途o_o

qr-code avfoundation augmented-reality ios

6
推荐指数
0
解决办法
1456
查看次数

如何使用CoreAudio的AudioConverter实时编码AAC?

我可以找到的所有示例代码都AudioConverterRef集中在我预先拥有所有数据的用例(例如在磁盘上转换文件).它们通常调用AudioConverterFillComplexBufferPCM进行转换,然后将其inInputDataProcUserData填入回调中.(这真的是它应该如何使用?为什么它需要回调呢?)对于我的用例,我试图从麦克风流式传输aac音频,所以我没有文件,我的PCM缓冲区正在实时填写.

由于我没有*ioNumberDataPackets = 0预先拥有所有数据,所以我在输入数据输出后尝试进行回调,但这只是将AudioConverter置于需要进行AudioConverterReset()ted 的死亡状态,而我不会从中获取任何数据.

我在网上看到的一种方法是,如果我存储的数据太小,就会从回调中返回错误,只要我有更多数据就再试一次,但这似乎是浪费资源,我不能让自己尝试一下.

我真的需要做"重试,直到我的输入缓冲区足够大",还是有更好的方法?

audio aac core-audio audio-converter ios

5
推荐指数
1
解决办法
3956
查看次数

如何绘制平面/ycbcr/420f/yuv/NV12/非 rgb 的 CVPixelBufferRef?

我收到了CMSampleBufferRef来自系统 API 的CVPixelBufferRefs,其中包含不是RGBA(线性像素)的s 。缓冲区包含平面像素(例如420faka kCVPixelFormatType_420YpCbCr8BiPlanarVideoRangeaka yCbCraka YUV)。

我想在将视频数据发送VideoToolkit到编码之前对其进行一些修改h264(绘制一些文本、覆盖徽标、旋转图像等),但我希望它高效且真实-时间。Buuuut 平面图像数据处理起来看起来很杂乱——有色度平面和亮度平面,它们的大小不同,而且……在字节级别上使用它似乎需要做很多工作。

我可能会使用 aCGContextRef并直接在像素顶部绘制,但据我所知,它仅支持 RGBA 像素。关于如何以尽可能少的数据复制和尽可能少的代码行来做到这一点的任何建议?

core-image core-video core-media ios replaykit

4
推荐指数
1
解决办法
2720
查看次数

为iPhone构建ARM汇编程序vorbis解码器lib'Tremolo'

我正在尝试为iPhone 编译Tremolo.我已经把文件拉进了bitwise.c bitwiseARM.s codebook.c dpen.s dsp.c floor0.c floor1.c floor1ARM.s floor_lookup.c framing.c info.c mapping0.c mdct.c mdctARM.s misc将.c res012.c转换为新目标,添加以下自定义设置:

GCC_PREPROCESSOR_DEFINITIONS = _ARM_ASSEM_
GCC_C_LANGUAGE_STANDARD = gnu99
GCC_THUMB_SUPPORT = YES
Run Code Online (Sandbox Code Playgroud)

...但是一旦xcode到达第一个汇编程序文件bitwiseARM.s,就会出现如下错误:

/tremolo/bitwiseARM.s:3:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:3:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:4:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:4:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:5:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:5:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:6:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:6:Rest of line ignored. 1st junk character valued 111 …
Run Code Online (Sandbox Code Playgroud)

iphone assembly arm vorbis

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

为什么在反序列化 Elixir 映射时`erl_decode` 会返回 NULL?

我正在尝试在 Elixir 程序和 C 程序之间移动一些数据。在 Elixir 中,我有一个我想要移动的结构。我使用:erlang.term_to_binary将其转换为二进制文件,然后将其混搭为 C。

但是,当我解码它时,它只会返回NULL?? 并且没有错误消息或任何东西。一堆其他长生不老药/erlang 术语工作正常;当我尝试通过地图或结构(这是一种地图)发送时,它特别失败。

我在 Elixir 中做这样的事情:

  msg = %Message{ title: "hello", body: "world" }
  binmsg = :erlang.term_to_binary(msg)
  send(state.port, {self(), {:command, binmsg}})
Run Code Online (Sandbox Code Playgroud)

.. 和 C(不包括接收消息,我已经确认它已经以正确的长度到达,甚至确认 C 和 elixir 中的字节是相同的):

  uint8_t *buf = read_cmd();
  ETERM *map = erl_decode(buf);
  erl_print_term(map, stdout);
Run Code Online (Sandbox Code Playgroud)

erlang serialization elixir

2
推荐指数
1
解决办法
43
查看次数