常用经验

1.NSLog

调试打印日志,包括所在的文件名,函数名,行号。

#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif

原文:你真的理解你在用的自定义NSLog吗?

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 崩溃问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容