编译失败
Bundleid不匹配
如果证书都配置正确了,注意看看Target中是否有Test,Test的id是不是和证书一致。
复制代码
no such provisioning profile was found
分别尝试用以下方法解决:
1.在证书和描述文件有更新后,需要完全退出Xcode再打开。
2.前往~/Library/MobileDevice/Provisioning Profiles,删除描述文件
3.Window-Devices,右键设备Show Provisioning Profile,删除描述文件,删除依赖这些描述文件的App。
4.删除Xcode的Device Data。
5.尝试证书签名配置那里选Don't Code Sign,保存,然后再选正确的证书。
复制代码
library not found for -l
注意检查Build Settings的Library Search Paths和Other Linker Flags是否残留有已删除的库配置。
复制代码
升级Xcode后,就编译不了
未升级前还好好的项目,升级了Xcode后,就报Undefined symbols for architecture arm64...
尝试删除缓存Device Data。
Preferences-Locations-Derived Data
下方有行小字显示了它的路径,末尾有个小小的右箭头,点它进入文件夹
然后可以选中全部项,删掉~~
复制代码
Pods的库升级后编译不了 或 .a文件升级更换后编译不了
清空Device Data。
复制代码
internal api error
在ios7真机调试时,bundleName不能是中文,改为英文即可
复制代码
Use of undeclared identifier ‘sqlite_int64'
如果有用到FMDB的话,头文件引入
#if FMDB_SQLITE_STANDALONE
#import <sqlite3/sqlite3.h>
#else
#import <sqlite3.h>
#endif
复制代码
Undefined symbols for architecture armv7
有时是因为更新了第三方库导致的,把xcode的drivedata清除即可
复制代码
Xcode选不了模拟器,模拟器不见了
如果Target的SDK编译版本高于Xcode模拟器支持的SDK版本,模拟器列表就会变成空,只需把Target的SDK版本选低点就好了。
运行中崩溃
[self becomeFirstResponder] 崩溃
成员变量中不可以有叫inputView的变量
Controller的updateViewConstraints崩溃
要先调用父类的updateViewConstraints,否则会崩溃
TableHeaderView约束崩溃
iOS7及以下TableHeaderView不可以设置与tableview关联的约束,否则会crash。 我猜测是headerView由tableView自动管理,如果手动为headerView添加与tableView关联的约束,会因冲突而crash。 ios8无此问题。
dispatch_semaphore崩溃
当某个dispatch_semaphore_t正处于dispatch_semaphore_wait的时候,释放这个dispatch_semaphore_t的引用(sema = nil),将会导致崩溃。 示例:
- (void)viewDidLoad {
[super viewDidLoad];
self.sema = dispatch_semaphore_create(0);
// 每隔1秒释放一个信号量
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
dispatch_semaphore_signal(self.sema);
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 模拟10个任务
for (NSInteger index = 1; index <= 10; ++ index) {
// 每个任务都需要等待到有信号量才能开始
dispatch_semaphore_wait(self.sema, DISPATCH_TIME_FOREVER);
NSLog(@"执行任务%@...", @(index));
}
// 全部任务执行完毕
[timer invalidate];
});
}
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesEnded");
// crash!
// 当某个dispatch_semaphore_t正处于dispatch_semaphore_wait的时候
// 释放这个dispatch_semaphore_t的引用,将会导致崩溃
self.sema = nil;
}
复制代码
控制台:
2016-11-22 16:01:50.520 SemaDemo[2990:136781] 执行任务1...
2016-11-22 16:01:51.482 SemaDemo[2990:136781] 执行任务2...
2016-11-22 16:01:52.495 SemaDemo[2990:136781] 执行任务3...
2016-11-22 16:01:53.209 SemaDemo[2990:136725] touchesEnded
复制代码
使用技巧
怎么查看真机沙盒目录
打开Xcode
顶部Window-Devices
保存到桌面,右键显示包内容就可以看到沙盒目录了。