Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何检查Objective-C中的内置函数实现?_Ios_Objective C_Xcode - Fatal编程技术网

Ios 如何检查Objective-C中的内置函数实现?

Ios 如何检查Objective-C中的内置函数实现?,ios,objective-c,xcode,Ios,Objective C,Xcode,我想问一下,是否有可能检查Xcode IDE中的内置函数实现。我的意思是-IntelliJ中是否有类似于CTRL+[单击函数名]的东西?我需要检查arc4random()实现。您不能检查实现,因为它是在stdlib.h中定义的,并且您没有它的实现文件访问权限。在Xcode中,您可以按住命令+单击函数名跳转到定义函数的文件(.h文件) 如果是内置函数,则只能在.h文件(头文件)中查看。无法在.m或.ccp文件中打开内置函数 使用arc4random()可以打开stdlib.h,但不能检查它是如何从

我想问一下,是否有可能检查Xcode IDE中的内置函数实现。我的意思是-IntelliJ中是否有类似于CTRL+[单击函数名]的东西?我需要检查
arc4random()
实现。

您不能检查实现,因为它是在
stdlib.h
中定义的,并且您没有它的实现文件访问权限。

在Xcode中,您可以按住
命令
+单击函数名跳转到定义函数的文件(.h文件)

如果是内置函数,则只能在
.h文件
(头文件)中查看。无法在
.m
.ccp
文件中打开内置函数

使用
arc4random()
可以打开
stdlib.h
,但不能检查它是如何从XCode实现的。幸运的是,你可以在这里查看

由苹果公司提供

编辑:

从Xcode打开
stdlib.h

  • 步骤1:
    命令
    +单击以
    arc4random()
  • 步骤2:查看导航栏

  • 步骤3:右键单击
    stdlib.h

  • 第四步:点击
    include
    文件夹,你会看到你想要什么

您无法访问此特定实现,因为它是操作系统的特定实现。但我认为它很可能与相同,因为苹果的文档将其命名为“BSD库函数”

编辑:更具体地说,此函数是C标准库的一部分,通常只需将其与作为操作系统一部分分发的二进制版本链接即可。因此,通常只有标题可用。不过,苹果公司在网站上提供了他们的libc源代码


但更广泛地说,除了目前开源的
Foundation
和Swift标准库之外,你找不到大多数苹果相关框架的实现。

我没有访问权限,或者“stdlib.h”已经编译好了?实际上,你可以打开
stdlib.h
@trungduc是的,我可以打开它,但这里只有函数的声明,而不是定义。@WojciechKazior是的,这是你能看到的最深的部分。我补充了一个答案。如果你想看的话,你可以看一下,这里只是函数声明。我们看不到定义-它在哪里?在另一个编译的文件中?@WojciechKazior是的,它在另一个文件中。我想可能是
.cc
.ccp
文件。但是我们无法从Xcode
命令打开它好吧,我明白了。。。有没有其他可能找到并打开它?是的,你可以在这里检查所有东西。例如,使用
arc4random()
,这是一个实现文件,希望它就是在arc4random()实现中使用的确切源代码。谢谢所以我们仍然不知道这个实现是操作系统的特定实现,还是与链接中的完全相同。。。但无论如何还是要感谢:)正如@trungduc在上面指出的,opensource.apple.com似乎是该库的官方来源,因此他链接的源代码似乎是正确的。@WojciechKazior理论上有一种方法可以知道提供的二进制文件是否是特定源代码的相同实现,但我认为这很难:你可以自己编译苹果提供的源代码,然后检查二进制文件是否匹配。但要获得相同的输出,必须使用与使用的编译器标志完全相同的编译器标志。所以我不确定要做多少工作。