小编Max*_*tov的帖子

在geometryReader中设置@State var

如何在 GeometryReader 中设置 @State var?

这是我的代码:

@State var isTest:Int = 0

var body: some View {
    VStack{
        ForEach(self.test, id: \.id) { Test in
            VStack{
                GeometryReader { geometry in
                    self.isTest = 1
Run Code Online (Sandbox Code Playgroud)

我尝试使用一个函数,但它不起作用。

@State var isTest: Int = 0

func testValue() {
    self.isTest = 1
}

var body: some View {
    VStack{
        ForEach(self.test, id: \.id) { Test in
            VStack{
                GeometryReader { geometry in
                    testValue()

Run Code Online (Sandbox Code Playgroud)

任何想法?谢谢!

swiftui geometryreader

7
推荐指数
2
解决办法
4523
查看次数

如何在 Wasm 中制作协程?

我试图允许用户在 C 中调用“main”并让“main”等待 requestAnimationFrame 继续执行。即 main 可以有一个 while(1) 循环,而在 main 中,会有一个“waitForAnimationFrame”...或者允许实现像 sleep(...) 这样的函数。

我一直在挖掘 emscripten 如何实际执行此操作的内部工作原理,但它看起来不太适合我的目的。这个页面涉及了许多与我想做的事情非常接近的事情,但是当以这种方式实现时,它们似乎都没有实际工作。https://kripken.github.io/blog/wasm/2019/07/16/asyncify.html

更具体地说,似乎最好的方法是保存堆栈,然后通过 Wasm 中的虚拟函数“返回”,然后当事件在 javascript 中发生时,我可以调用一个虚拟函数但返回到正确的位置。但是,这将需要调用堆栈,它似乎不是实际的一部分STACKTOP,或者通过stackSave和可用stackRestore。最值得注意的是,无论我似乎做什么似乎都setThrew不起作用。即它只是立即返回。

我还尝试使用一些启动/停止展开功能,但由于从 Javascript 返回到 Wasm 时出现错误,因此无法在那里取得进展。

这里有什么想法吗?我真的不能像某些人想要的那样使 main 异步并期望它仍然以相同的方式工作。

编辑:好的,这是我正在测试的一些示例。

示例 1:保存/恢复堆栈

在 C 中有这两个函数:

void waittask()
{
    volatile int sentinel = 85755555;
    consolelog("waittask1");
    waitout();
    consolelog("waittask2");
}

void waitret()
{
    volatile int sentinel = 12994423;
    consolelog("waitret1");
    stacksetup(sentinel);
    stacksetup(sentinel);
    consolelog("waitret2");
}
Run Code Online (Sandbox Code Playgroud)

使用 JavaScript 函数:


            stacksetup : function() {
                console.log( "STACK SETUP" ); …
Run Code Online (Sandbox Code Playgroud)

javascript c webassembly

7
推荐指数
0
解决办法
386
查看次数

如何使用 UIViewPropertyAnimator 为视图层阴影设置动画

我知道我们需要使用CABasicAnimation动画阴影,但我不知道如何UIViewPropertyAnimatorCABasicAnimation.

animation core-animation ios

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

Throttle 发布者如何在 Swift Combine 中工作?

我被Throttle出版商困住了。我不明白它选择间隔的方式。Debounce发布者更容易理解,它在每个发布的值之后选择一个间隔,并检查在该间隔内是否发布了新值。我Throttle至从 Apple看到了一些例子,但它们非常非常简单。

假设我们有一些上游产生值,并且我们知道所有值是何时产生的 ( input: [Time])。Throttle发布者使用这些值,限制它们并在其他时间产生值 ( output: [Time])。有没有办法编写一个产生正确预期的函数output

func output<Time>(interval: Time, input: [Time]) -> [Time] {
  //
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我相信latest参数在选择间隔时没有任何作用,是吗?我相信它只是从提供的间隔中选择值。

throttling frp swift debounce combine

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

Google Cloud Storage 签名 URL 上传 + Dropzone.js

我正在尝试使用 Dropzone.js 使用签名 URL 直接上传到 Google Cloud Storage。我已经设法覆盖添加到 Dropzone 的每个文件的上传 URL。Chrome 开发工具说PUT正在发生请求,但我不可避免地收到 HTTP 400 错误作为响应。

这是我的 Dropzone.js 配置

Dropzone.options.myAwesomeDropzone = {
    url: '/',
    uploadMultiple: false,
    method: 'PUT',
    parallelUploads: 1,
    uploadMultiple: false,
    header: '',
    autoProcessQueue: false,
    autoDiscover: false,
    maxFiles: 1,
    acceptedFiles: 'image/*,video/*',
    accept: function(file, done) {
        var self = this;
        $.post('/api/v1/signed_file_upload', {key: window.apiKey, name: file.name, type: file.type}, function(data) {
            if(data.success) {
                file.uploadURL = data.data;
                done()
                setTimeout(function() {
                    self.processFile(file)
                }, 0)
            } else {
                done(data.message)
            }
        })
    },
    init: function() …
Run Code Online (Sandbox Code Playgroud)

javascript google-cloud-storage dropzone.js google-cloud-platform

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

Wasm:有人支持多值 WASM 吗?

将多个值从 WebAssembly 传递到 Javascript 可能比实际需要的更困难。通常,我发现我必须:

  1. 设置 Javascript 和 WebAssembly 之间共享的内存。
  2. 执行 Wasm 工作来产生价值观。
  3. 将值存储在共享内存中的某个位置。
  4. 输出一个指向 Javascript 的内存指针。
  5. 让 Javascript 从共享内存中检索值。

多值是 Wasm 的一项功能,旨在使这一过程变得更容易,其中多个值可以直接从 Wasm 传递到 JavaScript,从而无需处理指针。步骤变为:

  1. 执行 Wasm 工作来产生价值观。
  2. 将值输出到 Javascript。

例如:

(module
  (func $multResult (export "multResult")
    (result f64 f64)
    f64.const 1
    f64.const 2
  )
)
Run Code Online (Sandbox Code Playgroud)

我们直接输出1和2。

我可以使用Rick Battagline 的有用函数从 WAT 编译 Wasm(稍作修复以正确支持多值标志):

node ./bin/watwasm bugrepro.wat -o newoutput.wasm -O3 --multi-value

将生成的 Wasm 编译转回 WAT,我们得到:

(module
 (type $none_=>_f64_f64 (func (result f64 f64)))
 (export "multResult" (func $0))
 (func …
Run Code Online (Sandbox Code Playgroud)

c rust webassembly

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

Swift Macros:找不到外部宏实现类型

我在我的项目中使用通过 SwiftPM 安装的MetaCodable宏,当我尝试使用 Microsoft Azure 管道并使用我的本地计算机作为运行代理 (MBP M1 Max - Sonoma - XCode 15) 来构建项目时,我收到以下错误消息:

error: external macro implementation type 'CodableMacroPlugin.CodedAt' could not be found for macro 'CodedAt'

这里有些人建议添加-external-plugin-pathother Swift flags构建设置中,但这并不能解决问题。

这个线程中,有些人还建议添加-load-plugin-library、 或-plugin-path、 或-load-plugin-executableto other Swift flags,我使用值尝试了这些选项的每个选项:$(BUILT_PRODUCTS_DIR)#MetaCodable但我在每个 CI 构建中都遇到了相同的错误。

我还在 Azure 的管道构建日志中收到此警告:

"output": "<unknown>:0: warning: compiler plugin not loaded: '/Users/my_user_name/Library/Developer/Xcode/DerivedData/MyProject/Build/Products/Release/CodableMacroPlugin; failed to initialize /Users/my_user_name/vsts-agent-osx-x64-2.183.1/_work/9/MyProject/Data/Models/SomeModel.swift

任何对此的想法都值得赞赏。

ios azure-pipelines xcode15 swift-macro swift5.9

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

沉默 X 秒后停止录音

我正在实施以下教程:语音转文本

我正在使用 AVAudioEngine 录制音频并使用 SFSpeechRecognizer 来实现语音到文本。此处,教程使用开始和停止录制的按钮将语音引导为文本。

当应用程序获得许可时,我开始在 viewDidAppear 进行录制。但我找不到任何方法可以在几秒钟的沉默后停止录制。以下是我的代码:

import UIKit
import Speech

public class ViewController: UIViewController, SFSpeechRecognizerDelegate {
// MARK: Properties

private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!

private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?

private var recognitionTask: SFSpeechRecognitionTask?

private let audioEngine = AVAudioEngine()

@IBOutlet var textView : UILabel!

@IBOutlet var recordButton : UIButton!


public override func viewDidLoad() {
    super.viewDidLoad()

    recordButton.isEnabled = false
}

override public func viewDidAppear(_ animated: Bool) {
    speechRecognizer.delegate = self

    SFSpeechRecognizer.requestAuthorization { authStatus in
        /*
         The callback …
Run Code Online (Sandbox Code Playgroud)

ios avaudioengine swift3

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

在 macOS 上检查 ELF 文件并获取二进制文件

我有一个 ELF 文件,我想从中获取我的代码的hex或文件。bin在终端中,如果 a do a file main,这是我的文件,它会显示:

main: ELF 32-bit LSB executable, UCB RISC-V, version 1 (SYSV), statically linked, not stripped
Run Code Online (Sandbox Code Playgroud)

据我所知,objdump在 macOS 上不起作用,并且otool -l main出现以下错误:

llvm-objdump: 'main': Object is not a Mach-O file type.
Run Code Online (Sandbox Code Playgroud)

ELF 文件是使用以下命令创建的:

riscv-none-gcc/8.2.0-2.1-20190425-1021/bin/riscv-none-embed-gcc --specs=nosys.specs main.c -o main
Run Code Online (Sandbox Code Playgroud)

那么有没有办法做到呢?

多谢

binary macos elf otool binutils

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

如何在 SwiftUI 中显示 UIAlertController?

在 UIKit 中,通常会UIAlertController在响应某些操作时呈现模态弹出警报消息。

SwiftUI 中是否有模态警报控制器类型?

有没有办法UIAlertController从 SwiftUI 类中呈现 a ?似乎可以使用UIViewControllerRepresentable但不确定是否需要这样做?

swift swiftui

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