gpt4 book ai didi

ios - 指针传递 Objective C 或 C 语法

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:20 25 4
gpt4 key购买 nike

我有一个方法,它接受以下参数。

void callAMethood(const void *iVar){}

现在我不清楚我应该怎么指点

下面看起来很简单,我只是传递地址而不是值。

NSString *a=@"Hi";
callAMethood(&a);

但是,下面的似乎工作得很好,但理解语法很困难。

char const * const a="HI";
callAMethood(&a);

甚至这样也可以 callAMethood(a);

最佳答案

正如 xlc 所指出的,两者都是错误的。

NSString *a=@"Hi";
callAMethood(&a); // This passes a NSString **


char const * const a="HI";
callAMethood(&a); // This passes a char const * const *

两者都有效,因为指向指针的指针仍然可以转换为 void *

不过,您不太可能有意。

利用 C 在编译时进行类型检查的优势,并使您的类型更加具体。

void awesome_function(NSString *amazingString);

NSString *yay = @"oh my god yes";
awesome_function(yay); // ok
awesome_function(&yay); // compiler error

简而言之:除非您有充分的理由使用 void *(我认为对于 Cocoa(Touch) 应用来说不太可能),否则不要这样做。

如果您不想进行编译时类型检查,请使用 Python 之类的工具。如果您希望能够处理不同的 Objective C 对象类型,这就是 id 的用途。

关于ios - 指针传递 Objective C 或 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078054/

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