gpt4 book ai didi

objective-c - 什么是带有可变限定符放置的 "the issue"?

转载 作者:太空狗 更新时间:2023-10-30 03:51:10 26 4
gpt4 key购买 nike

this document ,在标有“变量限定符”的部分下,Apple 说:

You should decorate variables correctly. When using qualifiers in an object variable declaration, the correct format is:

ClassName * qualifier variableName;

for example:

MyClass * __weak myWeakReference;
MyClass * __unsafe_unretained myUnsafeReference;

Other variants are technically incorrect but are “forgiven” by the compiler. To understand the issue, see http://cdecl.org/.

查看 cdecl.org 并不能说明任何问题。谁能解释他们所指的“问题”是什么?换句话说,帮助我说服其他人这实际上很重要,而不仅仅是“因为这个自述文件这么说。”

最佳答案

查看我的示例,将乱码翻译成英文

众所周知

ClassName * const varName; //varName is a constant pointer to ClassName

的含义不同
const ClassName * varName; //varName is a pointer to constant ClassName

ClassName const * varName; //varName is a pointer to constant ClassName

以同样的方式声明

ClassName * __weak varName; //varName is a weak pointer to ClassName

和这个声明

__weak ClassName * varName; //varName is a pointer to weak?? ClassName??

非常不同。然而,第二个的含义很明确(尽管它在技术上是不正确的)并且可以被编译器“原谅”。

一旦您开始使用指向指针的指针(例如 Foo * __autoreleasing *),正确性就会变得更加重要。

我假设他们想保护初学者开发者免受 C/C++ 声明乱码的影响。在开始时使用限定符似乎更自然。

关于objective-c - 什么是带有可变限定符放置的 "the issue"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23765950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com