小编Vad*_*ick的帖子

关于UIView的尺寸问题的问题

可能重复:
iPhone - UIView的sizeThatFits方法的输入参数

具体来说,它的论点应该是什么?文档说它是接收器的当前大小,但视图总是可以使用self.bounds.size,所以这没有意义.

它应该是可用空间吗?换句话说,是父母问孩子,"假设有可用的X x Y点空间,你想要多大?".

iphone cocoa-touch ios

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

是否存在Java与C++的真实基准?

在我提出问题之前,请注意这个问题不是:

  • Java比C++更慢(或更快)吗?
  • 为什么Java比C++更慢(或更快)?

这个问题不征求意见,它征求事实 - 数字.

许多基准测试,如https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdfhttp://benchmarksgame.alioth.debian.org/测试合成物,如Mandelbrot,或充其量只是真正程序的一小部分,比如数组排序.当然,这不会产生像整个应用程序基准测试那样的代表性数字.

那么,是否存在使用真实,完整的应用程序的基准测试,例如:

  • 笔记应用程序或文字处理器
  • Google地图等地图应用
  • 电子邮件客户端
  • 一个Web服务器

它必须是你每天使用的东西 - 一个完整的应用程序,而不是二进制树或排序数组的一小部分.

无论是延迟还是吞吐量,任何性能测量都可以.谢谢.

c++ java performance benchmarking

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

如何在iOS 11中实现音量快门?

我想在相机应用中实现音量快门。当用户按下音量按钮时,我应该得到一个事件来拍照。

我正在寻找满足以下要求的实施:

  • 即使当前音量最大,它也应该起作用,并且用户按下增大音量按钮。
  • 屏幕上的UI不应显示音量已更改。
  • 苹果应该没有已知的情况拒绝使用该技术的应用程序。

关于此主题还存在其他问题和答案,但对于iOS的较早版本,因此我想找到一个适用于iOS 11的问题。

ProCamera,ProCam和Camera +之类的相机应用程序具有满足所有这些条件的音量快门,因此这显然是可能的。

iphone ios avcapture shutter ios11

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

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

camera2 API可以告诉我当前曝光量与理想曝光量之间的区别吗?

我们正在构建一个相机应用,我们想使用手动曝光。我们不希望曝光算法设置ISO和曝光时间;取而代之的是,我们希望它告诉我们我们设置的手动曝光与根据算法得出的正确曝光之间的区别。这样,我们可以在计算中考虑到这一点。

iOS具有这样的API ExposureTargetOffset。Android camera2是否有这样的API?

shutter android-camera2 exposure exposure-time

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

如何使用 ARC 在 Swift 中手动保留?

我在 iOS 应用程序中使用带有 ARC 的 Swift 3,我想手动保留一个对象。

我试过 object.retain() 但 Xcode 说它在 ARC 模式下不可用。有没有其他方法可以做到这一点,告诉 Xcode 我知道我在做什么?


长版:

我有一个 LocationTracker 类,它将自己注册为 CLLocationManager 的委托。当用户的位置发生变化时,它会更新一个名为 location 的静态变量。我的代码的其他部分需要位置访问此静态变量,而无需或不需要对 LocationTracker 实例的引用。

这种设计的问题在于没有保留委托,因此在 CLLocationManager 向它发送消息时,LocationTracker 被释放,导致崩溃。

我想在将它设置为委托之前手动增加 LocationTracker 的引用计数。无论如何,该对象永远不会被释放,因为只要应用程序正在运行,就应该监视该位置。

我找到了一种解决方法,即使用一个静态变量“实例”来保存对 LocationTracker 的引用。我认为这种设计不雅,因为我永远不会使用 'instance' 变量。我可以摆脱它并明确增加引用计数吗?

正如所声称的那样,这个问题不是重复的,因为另一个问题是关于 Objective-C,而这个问题是关于 Swift。

retain automatic-ref-counting swift swift3 swift3.0.2

4
推荐指数
2
解决办法
4451
查看次数

在两者都适用的情况下,端到端测试是否比单元测试好?

首先让我定义一下单元测试和端到端测试的含义。假设您有一个带有一堆Java类的程序:A调用B,B调用C,依此类推。

单元测试是针对A模仿B的测试,另外是针对B模仿C的测试,依此类推。

端到端测试是针对A的测试,该测试对A以及可传递的B和C进行测试。

为简单起见,并且为了使讨论集中于当前主题,而不是被次要细节分散注意力,让我们假设系统总体上是无状态的:您使用输入调用顶层(A),然后得到一个输出。给定输入只有一个有效输出。

需要明确的是,我这里没有包括外部系统,例如到其他服务器的RPC,数据库,外部状态(例如文件系统),任何类型的UI(“以编程方式点击Delete按钮来删除当前文档”)等等。我们只是在谈论同一过程中的一堆类。

现在,可以采用两种方法:

  1. 编写端对端测试,尝试覆盖所有可能的输入和状态。仅在需要时才编写单元测试,例如,如果某个特定的类没有通过端到端测试进行充分测试,或者端到端测试失败,并且发现编写单元测试来本地化错误很有帮助。但总的来说,目标是进行全面的端到端测试。

  2. 编写单元测试以详尽地测试每个类或组件。写一个端到端的测试作为事后的想法,或者根本不做。即使编写它,也不要尝试详尽地测试所有可能的输入。

我更喜欢(1),因为如果端到端测试通过并且是详尽无遗的,那么我知道该系统对于我测试的所有情况都适用。尽管每个类或组件均能正常工作,但它们之间的集成点仍可能存在错误,这是我看到的大多数错误发生的地方(对不起,我现在没有参考)。

那么,以下哪一项对您更有效-进行了全面的端到端测试或进行了完整的单元测试?为什么?请给出具体原因,以便我和其他读者自己评估答案。

如果这个问题更适合Programmer.stackexchange.com,请移至那里(主持人)。

integration-testing unit-testing end-to-end

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

user_first_touch_timestamp 与 first_open_time 有何不同?

“首先”是指在本次应用程序运行中的第一个(直到应用程序终止并重新启动),还是第一个运行?

我以为这些字段只有一个值,但它们通常有两个。当我运行此查询时:

SELECT
  user_pseudo_id,
  COUNT(*) AS the_count
FROM (
  SELECT
    DISTINCT user_pseudo_id,
    user_first_touch_timestamp AS user_first_touch_timestamp
  FROM
    `noctacam.<my project>.events*`
  WHERE
    app_info.id = "<my bundle ID>"
  ORDER BY
    user_pseudo_id)
GROUP BY
  user_pseudo_id
ORDER BY
  the_count DESC
Run Code Online (Sandbox Code Playgroud)

我发现 0.6% 的用户对 user_first_touch_timestamp 有两个不同的值。这是 Firebase 中的错误吗?

同样对于 first_open_time:

SELECT
  user_pseudo_id,
  COUNT(*) AS the_count
FROM (
  SELECT
    DISTINCT user_pseudo_id,
    user_properties.value.int_value AS first_open_time
  FROM
    `noctacam.<my project>.events*`,
    UNNEST(user_properties) AS user_properties
  WHERE
    app_info.id = "<my bundle ID>"
    AND user_properties.key = "first_open_time"
  ORDER BY
    user_pseudo_id)
GROUP BY
  user_pseudo_id
ORDER BY …
Run Code Online (Sandbox Code Playgroud)

ios firebase-analytics

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

当我推送具有不同支持方向的控制器时,为什么 UINavigationController 不改变方向?

我的代码是如何设置的:

我使用导航控制器,带有控制方向的委托:

class NavDelegate: UINavigationControllerDelegate {
  func navigationControllerSupportedInterfaceOrientations(_ navigationController: UINavigationController) -> UIInterfaceOrientationMask {
    print("Checking orientation")
    if topViewController != nil {
      return topViewController!.supportedInterfaceOrientations
    }
    return .portrait
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序的主视图控制器名为 MainController,它仅限纵向:

class MainController: UIViewController {
  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .portrait
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

我有另一个控制器 PhotoController,它支持所有四个方向:

class PhotoController: UIViewController {
  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .all
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

我使用 pushViewController() 将 PhotoController 推到 MainController 之上。

问题:

每个控制器本身都能正确处理方向——当我将手机旋转到所有四个方向时 MainController 保持纵向,而 PhotoController 旋转到所有四个方向。

但是这种情况不能正常工作:

  1. 将手机横放,主控制器在屏幕上。
  2. 控制器处于肖像状态(如预期)。
  3. 将 PhotoController 推入堆栈。

我希望 …

orientation uiviewcontroller uinavigationcontroller uiinterfaceorientation

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

您如何将提交的更改从分支移动到主分支作为待处理的更改?

我正在实现一个新功能,为此我创建了一个新分支,并对其进行了一些提交,然后推送。我现在希望继续在 master 中以挂起/未提交更改的形式处理此功能。待定,因为在我提交之前它需要更多的工作。我该怎么做呢?

当我最终提交时,master 的修订历史应该只显示一次提交,就好像我从未创建过另一个分支或进行过中间提交。我该怎么做呢?

手动方法是创建第二个 git 工作区,在其中打开 master 并在另一个中打开分支,然后复制粘贴每个修改过的文件。有没有自动化的方法来做到这一点?

git branch rebase feature-branch

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