update: 动态库、静态库的编译链接细节
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 40 KiB |
BIN
assets/AppleMVCImpl.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/AppleMVCRefine.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
assets/BlockVariableDemo0.png
Normal file
|
After Width: | Height: | Size: 797 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 3.2 MiB |
BIN
assets/CompilerErrorWhenOnlyFunctionDeclaration.png
Normal file
|
After Width: | Height: | Size: 376 KiB |
|
After Width: | Height: | Size: 600 KiB |
BIN
assets/DWARFDUMPSymbolViaOffset.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
assets/DispatchgroupNotify.png
Normal file
|
After Width: | Height: | Size: 427 KiB |
BIN
assets/DuplicateSymbolErrorInGlobalSymbol.png
Normal file
|
After Width: | Height: | Size: 904 KiB |
BIN
assets/HarmonyCannotChangeOutputFile.png
Normal file
|
After Width: | Height: | Size: 742 KiB |
BIN
assets/HarmonyCrossPlatformArch.png
Normal file
|
After Width: | Height: | Size: 616 KiB |
BIN
assets/HarmonyFunctionHook.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
assets/HarmonyHookCompileTask.png
Normal file
|
After Width: | Height: | Size: 453 KiB |
BIN
assets/HarmonyHookStep1.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
assets/HarmonyHookWithAST.png
Normal file
|
After Width: | Height: | Size: 329 KiB |
BIN
assets/HarmonyHookWithAST2.png
Normal file
|
After Width: | Height: | Size: 331 KiB |
BIN
assets/HarmonyHookWithChangeInput.png
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
assets/HarmonyHookWithInstrument.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
assets/KVOCannotObserveNSMutableArray.png
Normal file
|
After Width: | Height: | Size: 684 KiB |
BIN
assets/KVOInstanceVariableCannotObserve.png
Normal file
|
After Width: | Height: | Size: 428 KiB |
BIN
assets/KVOObserveNSMutableArray.png
Normal file
|
After Width: | Height: | Size: 652 KiB |
BIN
assets/KVOObserveNSMutableArraySetter.png
Normal file
|
After Width: | Height: | Size: 631 KiB |
BIN
assets/KVOObserveNSMutableArrayUseAPI.png
Normal file
|
After Width: | Height: | Size: 800 KiB |
BIN
assets/KVOObservePropertyIsObject.png
Normal file
|
After Width: | Height: | Size: 543 KiB |
BIN
assets/KVOObservePropertyIsObjectUseAPI.png
Normal file
|
After Width: | Height: | Size: 692 KiB |
BIN
assets/LDIgnoreWeakSymbolWhenMeetSameName.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
assets/LDTreatIgnoreWeakSymbolWhenMeetSameName.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
assets/LLVM-Debug.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
assets/LLVM-Debug1.png
Normal file
|
After Width: | Height: | Size: 252 KiB |
BIN
assets/LLVM-Debug2.png
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
assets/LLVM-Debug3.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
assets/LLVM-Debug4.png
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
assets/LLVM-Debug5.png
Normal file
|
After Width: | Height: | Size: 333 KiB |
BIN
assets/LLVM-Debug6.png
Normal file
|
After Width: | Height: | Size: 309 KiB |
BIN
assets/MVPArchStructure.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
assets/MVVMArchStructure.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
assets/MergeTwoStaticLib.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets/MockCrashAndDiaplayViaConsoleApp.png
Normal file
|
After Width: | Height: | Size: 789 KiB |
BIN
assets/MultipleTargetWithMacro.png
Normal file
|
After Width: | Height: | Size: 386 KiB |
BIN
assets/MultipleTargetWithSwiftMacro.png
Normal file
|
After Width: | Height: | Size: 515 KiB |
BIN
assets/NMListSymbolViaOffset.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/NSMutableArrayCopyIssue.png
Normal file
|
After Width: | Height: | Size: 710 KiB |
|
Before Width: | Height: | Size: 915 KiB After Width: | Height: | Size: 600 KiB |
BIN
assets/OBJDUMPSymbolViaOffset.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
assets/OCCallSwiftAssemble.png
Normal file
|
After Width: | Height: | Size: 747 KiB |
BIN
assets/OCObjectHiddenByLinker.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
assets/OCObjectListHiddenByLinker.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
assets/OCObjectWasExportedByDefault.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
assets/ObjectFileConvertToStaticLib.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
assets/PerformThreadTaskByRunLoopSource0.png
Normal file
|
After Width: | Height: | Size: 675 KiB |
|
Before Width: | Height: | Size: 303 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 221 KiB |
BIN
assets/RunloopPerformSelectorAfterDelayFix.png
Normal file
|
After Width: | Height: | Size: 330 KiB |
BIN
assets/RunloopPerformSelectorAfterDelayFix1.png
Normal file
|
After Width: | Height: | Size: 256 KiB |
BIN
assets/RunloopPerformSelectorAfterDelayFix2.png
Normal file
|
After Width: | Height: | Size: 270 KiB |
BIN
assets/RunloopPerformSelectorAfterDelayFix3.png
Normal file
|
After Width: | Height: | Size: 272 KiB |
BIN
assets/RunloopPerformSelectorAfterDelayFix4.png
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
assets/SchemeChooseBuildConfiguration.png
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
assets/SelfDefineFramworkUseStaticLib.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
assets/ShellScriptToExecuteConfigurationsShellScript.png
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 662 KiB After Width: | Height: | Size: 1.9 MiB |
BIN
assets/SwiftBlockRetainCycle.png
Normal file
|
After Width: | Height: | Size: 691 KiB |
BIN
assets/SwiftCallSwiftAssemble.png
Normal file
|
After Width: | Height: | Size: 711 KiB |
BIN
assets/SwiftCallSwiftMethodUseDynamic.png
Normal file
|
After Width: | Height: | Size: 828 KiB |
BIN
assets/SwiftCannotOverrideStaticMethod2.png
Normal file
|
After Width: | Height: | Size: 327 KiB |
BIN
assets/SwiftClassExposedToOCThenCalledBySwift.png
Normal file
|
After Width: | Height: | Size: 657 KiB |
BIN
assets/SwiftClassExposedToOCThenCalledBySwift1.png
Normal file
|
After Width: | Height: | Size: 762 KiB |
BIN
assets/SwiftClassExposedToOCThenCalledBySwift2.png
Normal file
|
After Width: | Height: | Size: 904 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 87 KiB |
BIN
assets/SwiftEnumCaseNumAffectMemory.png
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
assets/SwiftTypeProperytyDispatchOnce1.png
Normal file
|
After Width: | Height: | Size: 723 KiB |
BIN
assets/SwiftTypeProperytyDispatchOnce2.png
Normal file
|
After Width: | Height: | Size: 588 KiB |
BIN
assets/SwiftTypeProperytyDispatchOnce3.png
Normal file
|
After Width: | Height: | Size: 450 KiB |
|
Before Width: | Height: | Size: 55 KiB |
BIN
assets/WeakSolveBlockRetainCycle.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
assets/XcconfigGeneratedByCocoapods.png
Normal file
|
After Width: | Height: | Size: 575 KiB |
BIN
assets/XcconfigInSpecificConditionTest.png
Normal file
|
After Width: | Height: | Size: 1002 KiB |
BIN
assets/XcconfigMatchScheme.png
Normal file
|
After Width: | Height: | Size: 676 KiB |
BIN
assets/XcconfigResultCheck.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
assets/XcodeAddUserDefinedSetting.png
Normal file
|
After Width: | Height: | Size: 689 KiB |
BIN
assets/XcodeCompileErrorOnMockObjcClass.png
Normal file
|
After Width: | Height: | Size: 608 KiB |
BIN
assets/XcodeCreateNewConfiguration.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
BIN
assets/XcodeSchemeMatchConfiguration.png
Normal file
|
After Width: | Height: | Size: 720 KiB |
BIN
assets/XcodeXcconfigDemo1.png
Normal file
|
After Width: | Height: | Size: 345 KiB |
BIN
assets/XcodeXcconfigDemo2.png
Normal file
|
After Width: | Height: | Size: 482 KiB |
BIN
assets/blockCaptureStrongObjectError.png
Normal file
|
After Width: | Height: | Size: 853 KiB |
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 85 KiB |
55
assets/xcode_run_cmd.sh
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
|
||||
ExecuteCommand() {
|
||||
#判断全局字符串VERBOSE_SCRIPT_LOGGING是否为空。-n string判断字符串是否非空
|
||||
#[[是 bash 程序语言的关键字。用于判断
|
||||
if [[ -n "$VERBOSE_SCRIPT_LOGGING" ]]; then
|
||||
#作为一个字符串输出所有参数。使用时加引号"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数
|
||||
if [[ -n "$TTY" ]]; then
|
||||
echo "♦ $@" 1>$TTY
|
||||
else
|
||||
echo "♦ $*"
|
||||
fi
|
||||
echo "------------------------------------------------------------------------------" 1>$TTY
|
||||
fi
|
||||
#与$*相同。但是使用时加引号,并在引号中返回每个参数。"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
|
||||
if [[ -n "$TTY" ]]; then
|
||||
echo `$@ &>$TTY`
|
||||
else
|
||||
"$@"
|
||||
fi
|
||||
#显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
|
||||
return $?
|
||||
}
|
||||
|
||||
DisplayError() {
|
||||
#在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2
|
||||
# > 默认为标准输出重定向,与 1> 相同
|
||||
# 2>&1 意思是把 标准错误输出 重定向到 标准输出.
|
||||
# &>file 意思是把标准输出 和 标准错误输出 都重定向到文件file中
|
||||
# 1>&2 将标准输出重定向到标准错误输出。实际上就是打印所有参数已标准错误格式
|
||||
if [[ -n "$TTY" ]]; then
|
||||
echo "$@" 1>&2>$TTY
|
||||
else
|
||||
echo "$@" 1>&2
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
ExecuteCMDAndDisplayInTerminal() {
|
||||
if [[ ! -e "$TTY" ]]; then
|
||||
DisplayError "=========================================="
|
||||
DisplayError "❌ ERROR Occured: Did not config tty to output."
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [[ -n "$CMD" ]]; then
|
||||
ExecuteCommand "$CMD" ${CMD_FLAG}
|
||||
else
|
||||
DisplayError "=========================================="
|
||||
DisplayError "❌ ERROR: Failed to run CMD. THE CMD must not be null"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
ExecuteCMDAndDisplayInTerminal
|
||||