1.NSLog
调试打印日志,包括所在的文件名,函数名,行号。
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif
2.Xcode加载插件
(1)首先插件的位置如下:
xcode插件的路径:~/Library/Developer/Xcode/Plug-ins 老版本:~/Library/Developer/Application Support/Developer/Shared/Xcode/Plug-ins
(2)打开路径后,选择一个插件显示包内容
Contents -> Info.plist
中的DVTPlugInCompatibilityUUIDs
记录的就是会加载该插件的程序UUID。
(3)通过在终端中输入命令defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID
可以获得xcode的UUID。如果有多个xcode,路径需要做相应的更换。
(4)将第三步获得的UUID加入到插件的Info.plist中保存,重新打开xcode,选择load bundle即可加载上此插件。
(5)相反的,删除插件中对应的UUID,就可以让该xcode不加载插件。可以解决xcode8因为插件(输入字母)而崩溃的问题。
3.com.apple.CoreSimulator.CoreSimulatorService
Mac上安装有多个Xcode,在编译、上传pods时(pod repo push REPO_NAME SPEC_NAME.podspec
)遇到的错误类似下面这种
CoreSimulator is attempting to unload a stale CoreSimulatorService job.
Detected Xcode.app relocation or CoreSimulatorService version change.
Framework path (/Applications/Xcodes/Xcode_8.0.app/Contents/Developer/Library/PrivateFrameworks/CoreSimulator.framework)
and version (303.8) does not match existing job path
(/Applications/Xcodes/Xcode-7.3.1.app/Contents/Developer/Library/PrivateFrameworks/CoreSimulator.framework/Versions/A/XPCServices/com.apple.CoreSimulator.CoreSimulatorService.xpc)
and version (209.19).
解决办法,终端输入:
launchctl remove com.apple.CoreSimulator.CoreSimulatorService || true
相关链接
CoreSimulator is attempting to unload a stale CoreSimulatorService job
Random build failures on Teamcity
4.MAC上开启和关闭隐藏文件的快捷键
Command + Shift + .
5.objc_msgSend在32位和64位机器上的差异
在32位机器上直接使用objc_msgSend
没有问题,但是在64位上直接使用会造成崩溃,需要添加上强制转换类型的前缀,如:
((void(*)(id, SEL, id))objc_msgSend)(otherClass, setSel, value);
相关链接
objc_msgSend arm64 崩溃问题
网友评论