小编Tay*_*lor的帖子

如何计算3D Morton数(交错3个整数的位)

我正在寻找一种快速计算3D Morton数的方法.这个网站有一个基于幻数的技巧,可以用于2D Morton数字,但是如何将它扩展到3D似乎并不明显.

所以基本上我有3个10位数字,我想用最少的操作交错成一个30位数.

algorithm bit-manipulation z-order-curve

35
推荐指数
5
解决办法
2万
查看次数

SwiftUI`@ State`关键字有什么作用?

SwiftUI教程使用@State关键字来表示可变UI状态:

@State var showFavoritesOnly = false

它提供了以下摘要:

状态是一个值或一组值,可以随时间变化,并影响视图的行为,内容或布局。您可以将属性与@State属性一起使用,以将状态添加到视图中。

  • 关键字的确切含义是什么?
  • 变异@State变量如何导致视图重新计算?
  • 其他变量在body吸气剂中如何不变?

swift swiftui swift5.1

24
推荐指数
3
解决办法
4981
查看次数

c ++图形数据结构的并发垃圾收集

我有一个用于音频信号处理的有向图数据结构(如果你很好奇,请参见http://audulus.com).

我想图形边缘是强引用,所以在没有周期的情况下,std::shared_ptr就可以了.唉,图中有潜在的周期.

所以,我有一个简单的并发标记扫描收集器的想法:

mutator线程将事件发送到收集器线程.收集器线程维护其自己的图形表示,并且不遍历mutator线程的图形.收集器线程只是定期使用标记扫描.

事件将是以下(在函数调用形式中):

  • AddRoot(Node*)
  • RemoveRoot(Node*)
  • AddEdge(Node*, Node*)
  • RemoveEdge(Node*, Node*)

这个方案是否正确?收集器线程具有mutator线程看到的旧版本.我的直觉是,由于较早时间无法访问的节点以后仍然无法访问,因此收集器线程可能会在找到无法访问的对象时立即删除它.

另外,如果它对于一个mutator线程是正确的,它是否适用于多个mutator线程?

UPDATE

我在这里发布了代码:https://github.com/audulus/collector.代码实际上是相当通用的.使用RootPtr<T>自动跟踪根节点.节点之间的链接使用EdgePtr<T>.

收集器似乎适用于多个mutator线程(在我的应用程序和单元测试中),但我觉得需要证明正确性.

请注意(在下面的@AaronGolden的评论中,下面的评论来看,人们不会读这个):mutator线程负责以正确的顺序调用收集器函数.例如,如果mutator线程RemoveEdge(a,b)在分配b给a 之前调用RootPtr,则收集器可以进行干预和收集b.

更新2:

我已将代码更新到我的最新版本并更新了上面的链接.我现在已经在我的应用程序中使用了一年多的代码,并没有将任何错误归咎于它.

c++ concurrency garbage-collection memory-management graph

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

升级到Xcode 6.3后,无法提交新建的iOS应用档案

升级到6.3并为我的iOS应用程序构建存档后,存档将显示在"其他项目"下,"提交到App Store"将显示为灰色.

我在升级之前构建的存档在应用程序名称下正确列出.

我注意到它适用于我的应用程序的Mac版本.

我尝试将iOS版本的目标名称和方案名称更改为所有与管理器中iOS应用程序下的名称匹配,但这没有帮助(如果只是事情那么简单!).

档案窗口

xcode ios

16
推荐指数
2
解决办法
6913
查看次数

SwiftUI macOS 右侧边栏检查器

我有一个基于文档的 SwiftUI 应用程序。我想制作一个类似于 Xcode 中的检查器侧边栏。

从 Xcode 的 Document App 模板开始,我尝试了以下操作:

struct ContentView: View {
    @Binding var document: DocumentTestDocument
    @State var showInspector = true

    var body: some View {
        HSplitView {
            TextEditor(text: $document.text)
            if showInspector {
                Text("Inspector")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
            }
        }
        .toolbar {
            Button(action: { showInspector.toggle() }) {
                Label("Toggle Inspector", systemImage: "sidebar.right")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这产生了:

截屏

如何像在 Xcode 中一样将右侧边栏扩展到全高?

NavigationView 适用于左侧边栏,但我不确定如何为右侧边栏执行此操作。

macos swiftui macos-big-sur

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

Xcode模块在设置中启用,但仍然无法使用@import

在设置中,"启用模块"设置为"是":

启用模块

然而我仍然得到错误:"禁用模块时使用'@import'."

错误

这是在我正在更新以使用模块的项目,而不是新项目(在新项目中正常工作).

有没有Xcode回归包含而不是使用模块的条件?

xcode objective-c

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

为什么std :: weak_ptr没有operator->?

它可以这样实现:

  std::shared_ptr<T> operator->() {
      auto shared = lock();
      if(shared == nullptr) {
          throw std::bad_weak_ptr(); // or some other exception
      }
      return shared;
  }
Run Code Online (Sandbox Code Playgroud)

现场演示

为什么weak_ptr 的作者决定不使用operator->?(他们一定想到了)

我可以想到潜在的原因,但我想知道官方的原因是什么,如果存在的话.可能的原因:

  • 阻止多次调用的额外递增/递减引用计数
  • 鼓励显式锁定而不是(有些隐藏)异常

如果您对返回的shared_ptr的生命周期感到困惑,请参阅此文章.

另外,有人问为什么如果你希望它没有过期,会使用weak_ptr?答案:周期.

c++ smart-pointers shared-ptr weak-ptr

8
推荐指数
2
解决办法
2117
查看次数

Xcode:在目标之间移动大量文件

我正在尝试将文件从一个目标的Compile Sources构建阶段移动到另一个目标的Compile Sources构建阶段(相同的项目,没有实际移动磁盘上的文件).Xcode(5.1.1和6-beta)都不会让我拖放文件,手动重新添加它们将是乏味的.

这些文件分布在不同的组之间,因此选择它们并更改目标成员资格复选框也很繁琐.

有没有快速的方法在目标之间移动多个文件?

xcode

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

c ++ 11:从模板函数构建std :: tuple

我有以下功能:

template<class T>
T Check(int index);
Run Code Online (Sandbox Code Playgroud)

我如何编写一个函数,在CheckTuple给定元组类型的情况下,通过调用来填充元组Check

例如:

CheckTuple< std::tuple<int, float, std::string> >()
Run Code Online (Sandbox Code Playgroud)

将返回以下元组:

std::make_tuple( Check<int>(1), Check<float>(2), Check<std::string>(3) )
Run Code Online (Sandbox Code Playgroud)

我看到的其他问题涉及解压缩给定元组,而不是以这种方式构建一个元组.

c++ variadic-templates c++11

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

为什么std :: shared_ptr没有运算符 - >*?

为什么std :: shared_ptr没有operator->*

使用可变参数模板看起来很容易.

有关详细信息,请参阅此文章.

编辑:这似乎是一个潜在的重复:关于shared_ptr和指向成员运算符的指针` - >*`和`std :: bind`

c++ shared-ptr variadic-templates

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