须知:html
或者你也能够点击进入c++
此时地址为:opensource.apple.com/source/objc… 界面以下: git
这样就能够出现历史版本的列表。github
把 Source
改为 tarballs
便可看到全部历史版本的列表macos
以上就是下载的整个过程。api
接下来,咱们打开项目,下载的初始项目是这样的。 bash
编译一下。它会提示咱们 “Remove” i386 架构模式。架构
去掉 i386 架构的步骤 app
而后提示咱们少了 sys/reason.h
函数
上网找了很久,终于在
opensource.apple.com/source/xnu/…
找到了文件 手动保存一下,命名为:reason.h
第五步输入为: $(SRCROOT)/CommondHeader 指向reason.h 所在地址
而后当你编译时,还有会有不少错误。咱们依依按照这种方法来搞定。
mach-o/dyld_priv.h
,咱们依旧按照以前的方式来搞定。lock_private.h
,下载地址(opensource.apple.com/source/libp…, 下载命名为:lock_private.hLIBC_NO_LIBCRASHREPORTERCLIENT
ld: warning: -F path '/Users/kare/OC/OpenSource/objc4-750.1/libobjc.order' is not a directory
ld: can't open order file: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/AppleInternal/OrderFiles/libobjc.order 复制代码
ld: warning: -F path '/Users/kare/OC/OpenSource/objc4-750.1/libobjc.order' is not a directory
ld: library not found for -lCrashReporterClient
复制代码
那么去 Build Setting 搜索 lCrashReporterClient
删除便可.
最终是
set -x /usr/bin/xcrun -sdk macosx clang++ -Wall -mmacosx-version-min=10.12 -arch x86_64 -std=c++11 "
{BUILT_PRODUCTS_DIR}/markgc" "
{BUILT_PRODUCTS_DIR}/libobjc.A.dylib"
error: no such public header file: '/tmp/objc.dst/usr/include/objc/ObjectiveC.apinotes'
复制代码
把这里设置为 Errors Only
可是还会报这个错误
暴力解法,直接把这里的东西所有删除掉。再编译,就能够成功了。
过程很漫长,可是仍是颇有意思的。
而后就是简历 target,使用源码调试了。
好比想看class_copyIvarList
内部实现,直接点击进入就行了哟。
快来试试吧,有源码,就直接怼个窟窿。不服就干。
另外,提供一份已经配置好的 Objc-750.1
可编译的源码。