记录工作中常见问题
EXC_BAD_ACCESS KERN_INVALID_ADDRESS
报错一般都是地址问题,使用了已经释放了的地址空间。
空对象可以调用方法、属性,
但空对象直接取值时会崩溃(nil->_abc
)EXC_BAD_ACCESS KERN_INVALID_ADDRESS
在block中用了weak时,且用->
取值要注意,保证对象不能为nil
如下简单测试代码,要加self为nil判断:
__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
__strong typeof(self) self = weakSelf;
if (!self) return;
self->_abc = 1;
});
参考:Xcode自定义模板
自动拷贝模板至Xcode脚本
#!/bin/sh
current_dir=$(pwd)
script_dir=$(dirname $0)
dir="$current_dir/$script_dir/XXX_XX.xctemplate"
path=~/Library/Developer/Xcode/Templates/File\ Templates/User\ Interface
mkdir -p "${path}" && cp -r "$dir" "$path"
if [ $? -eq 0 ]; then
echo "✅XXX_XX 配置脚本执行成功!"
else
echo "\033[31m❗️XXX_XX 配置脚本执行失败! \033[0m"
fi
在xx.podspec 中添加
# 脚本路径
spec.resources = ['Source/Script/*']
# 执行脚本
spec.prepare_command = <<-CMD
path=./Source//Script/config.sh
if [ -f "$path" ]; then
sh $path
else
echo "$path not exist"
fi
pwd
printenv
echo "======end======="
CMD