小编Ege*_*nar的帖子

AVCaptureVideoPreviewLayer横向定位

如何让"AVCaptureVideoPreviewLayer"在横向显示时正确显示?它在纵向上工作正常但不旋转,并在父视图控制器处于横向时显示旋转的相机捕获.

landscape avfoundation calayer ios

13
推荐指数
4
解决办法
6820
查看次数

如何使用NoSQL实现本地化

到目前为止,我一直使用关系数据库(确实很开心!).然而,最近,我发现Parse并发现它非常好所以决定尝试一下.但是,它附带一个NoSQL数据库.我仍然试图绕过它.所以我的问题是,你会如何推荐实现本地化?我能想到以下方法,你怎么看?

  • 方法A:在文档上有一个"字符串"字段,并在该字段中存储所有特定于语言的数据.例如,

    "strings":
    {
      "en" : 
        {
          "title" : "English title"
        }
      "de" :
        {
          "title" : "Deutsch Titel"
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 方法B:在文档上有多个字段,每个字段指向一个特定于语言的文件.定义另一个名为strings的文档.例如,

    "strings_en": <Pointer to a *strings* object>
    "strings_de": <Pointer to a *strings* object>
    
    // And here's one *strings* document
    {
      "title" : "My English title"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 方法C:就像在关系数据库模式中一样,有一个带有语言代码的单独字符串表.分别查询此表/文档并合并结果

  • 方法D :(新)类似于方法B,在两个文档中支持许多列,目的是将所有相关数据保存在同一文档中.

    {
      "title_en" : "English title",
      "title_de" : "Deutsch titel",
      "description_en" : "English description",
      "description_de" : "Deutsch beschreibung"
    }
    
    Run Code Online (Sandbox Code Playgroud)

方法A:对我有意义,但我不知道一种简单的方法(在Parse框架中)只将相关数据发送回客户端.它会将所有字符串发送到客户端 - >冗余带宽使用

方法B:来自关系数据库背景,我不喜欢有太多列的前景(它最终可能有30种不同语言的30个不同的列),而且,客户端不能只使用对象.字符串.它总是必须在字段名称的末尾附加语言代码,这是繁琐的(并且也有风险).但这种方法对我来说最有意义. …

parsing localization nosql

8
推荐指数
1
解决办法
1301
查看次数

重写静态 iOS 库中的符号

我正在开发一个链接多个静态库的 iOS 应用程序。挑战在于,这些链接库定义了具有不同实现的相同方法名称。奇怪的是,我没有收到任何duplicate symbol definition错误;但是,毫不奇怪,我最终只能访问该方法的一种实现。

更清楚地说,假设我有 libA 和 libB,它们都定义了一个名为 func1() 的全局 C 方法

当我链接 libA 和 libB 并调用 func1() 时,它会解析为 libA 或 libB 的实现,而没有任何编译警告。但是,我需要能够分别访问 libA 的 func1() 和 libB 的 func1()。

有一个类似的 SO post解释了如何在 C 中完成它(通过符号重命名)但不幸的是,正如我发现的那样,该objcopy工具不适用于 ARM 架构(因此是 iPhone)。

(我会把它提交到 App Store,因此,动态链接不是一个选项)

xcode static-linking ios

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

使用dispatch_async时EXC_BAD_ACCESS

我们最近修改了我们的线程机制,支持dispatch_async在大多数地方使用'(在做了很多关于NSOperation和dispatch_async的阅读之后)*.然后我们的代码开始在代码的各个部分与EXC_BAD_ACCESS崩溃,总是在dispatch_async(queue,...)部分,没有明确的模式.通常在20分钟后发生--2小时.

我们的dispatch_async块用于通知听众,如下所示:

NSMutableSet *_listeners; // Initialised elsewhere and filled with interested listeners
void(^block)(id listener); // Block to execute

@synchronized(_listeners) {
  for (id listener in _listeners) {
    dispatch_async_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // We used different queues for different listeners, but showing only one type of queue here for brevity
    dispatch_async(queue, ^{ // CRASHING LINE
      block(listener);
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

常见的症状是:

  • 发生在iOS10上,从未在iOS8上发生过
  • 在调试期间发生但从未报告过生产

(这是一个自我回答的问题)

*我们喜欢简单dispatch_async,不需要阻止/依赖功能,NSOperationQueue我们很快就会转向C++,所以想保持低水平.

exc-bad-access dispatch grand-central-dispatch ios dispatch-async

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