小编Dav*_*han的帖子

Swift:将未初始化的C结构传递给导入的C函数

我知道这个答案,但这不是一回事 - 那就是传递一个用分配初始化的指针.

我正在与具有以下结构定义的C库连接:

typedef struct myStruct { unsigned char var [50]; } myStruct;
Run Code Online (Sandbox Code Playgroud)

有一个函数可以传递结构的地址 - 通常基于堆栈而不是堆,因此:

myStruct mine;
initMyStruct(&mine);
Run Code Online (Sandbox Code Playgroud)

这会初始化结构的内容 - 调用者不知道内存的内部格式,因此会混淆.

在Swift中,我正在创建一个类,它将封装结构和与其他C函数接口的接口.

class MyClass {

    var mine : myStruct

    init() {

        initMyStruct(&mine)
        // Error: Variable 'self.msg' passed by reference before being initialized

    }

}
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活弄清楚如何初始化结构,或者如果可以替代使用一个点.

mine = myStruct()
// Fails because you aren't providing the value of the member 'var'

mine = myStruct((CUnsignedChar(), CUnsignedChar(), /*... repeat to 50 */))
// Cannot find an overload for 'init' …
Run Code Online (Sandbox Code Playgroud)

c macos struct pointers swift

13
推荐指数
2
解决办法
5854
查看次数

服务器端渲染,延迟加载响应图像,正确方法

我正在编写一个基于 React 的应用程序,它使用 SSR 生成适合搜索引擎和初始客户端负载的内容,并在客户端使用 React.hydrate()。都好。

在带有标签的页面上,我在 img 上同时使用 src、srcSet 和 size 属性,以允许客户端选择合适的图像大小。再次,一切都很好。

但是,至少在 Safari 中,当同时使用 src 和 srcSet 时,会加载 src 资源以及相关的 srcSet 资源。我可以在浏览器网络检查器中看到这一点。删除 src 属性会导致浏览器仅加载 srcSet 资源之一。

虽然我可以修复客户端,但这意味着 img 标签在搜索引擎爬虫方面不完整,没有 src 属性。我假设爬虫不使用 srcSet 但我想他们可以这样做。我可以通过使用具有空 SVG 或 1x1 GIF/PNG 的 src 属性的数据 URI 使 img 标记更加完整,但这无助于确保爬虫可以访问适当分辨率的图像资源。网站的性质至少表明图像资源应该可以在搜索引擎上找到,作为一种将访问者吸引到适当内容的方式。

我查看了几个延迟加载 React 组件,它们似乎都遇到了这个问题或其他问题的某种组合。

有谁知道这是否是 Safari 特定的错误,或者是否有针对客户端延迟加载时图像 SSR 的通用解决方案?理想情况下,在不调用次优客户端行为的 SSR 生成代码上,src、srcSet 和大小的首选组合是什么?

注意:延迟加载是可取的,因为它的图片库/索引页面包含大量图像,而移动/低带宽是一个关键的人群。

html lazy-loading image reactjs server-side-rendering

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