我知道这个答案,但这不是一回事 - 那就是传递一个用分配初始化的指针.
我正在与具有以下结构定义的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) 我正在编写一个基于 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 和大小的首选组合是什么?
注意:延迟加载是可取的,因为它的图片库/索引页面包含大量图像,而移动/低带宽是一个关键的人群。