问题记录

. MKMapView 疑似无法释放

环境:XCode9.2, iOS10.3.3, iPhone5
>问题描述:从控制器 A present 到控制器 B,B 中添加了一个 MKMapView,之后从 B dismiss 回 A,结果是控制器 A 整个界面无法进行任何操作,像是整个屏幕被蒙上一层透明的遮罩。
进行检查后,发现屏幕并无透明遮罩。
通过 Storyboard 和代码两种方式去初始化 MKMapView,都是相同的结果。

> 解决:
这可能是 MKMapView 的析构函数的问题,不管你的地图视图对象如何配置,在Xcode8和iOS10系统下都有几率出现冻结你的应用程序,主线程挂起。在dealloc方法中添加如下代码,可解决

- (void)dealloc
{
#if DEBUG
    // Xcode8/iOS10 MKMapView bug workaround
    static NSMutableArray* unusedObjects;
    if (!unusedObjects)
        unusedObjects = [NSMutableArray new];
    [unusedObjects addObject:mapView];
#endif
}

. UITableView 顶部偏移问题

环境:XCode9.2, iOS10.3.3, iPhone5
>问题描述:在控制器 A 中添加了2个 UITableView,tableA 和 tableB。 tableA 的顶部向下偏移了20个像素,tableB 显示正常。设置以下代码没有作用
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.automaticallyAdjustsScrollViewInsets = NO;

> 解决:
当你的控制器上面添加了一个控件的时候, 再添加 tableView 时(也就是说 tableView 不是控制器上的第一个视图时), tableView就会做出判断, 不会向下偏移。添加以下代码可解决

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    tableA.contentInset = UIEdgeInsetsZero;
    tableA.scrollIndicatorInsets = UIEdgeInsetsZero;
}

. NSTimer 刷新 UIButton 文字时闪烁

环境:XCode9.2, iOS10.3.3, iPhone5
问题描述:自定义了一个获取验证码时用的倒计时按钮,在每次刷新文字时都会闪烁

> 解决:
将 UIButton 的 type 从 system 改为 custom 即可。

. -ObjC 引起的 duplicate symbols

问题描述:在项目中用到了 A,B 两个公司的 framework,A公司的 framework 需要设置 -ObjC 才可以正常使用,但加了 -ObjC 后 B 公司的 framework 就会报 duplicate symbols 错误。

原因分析:
Other linker flags 对应 ld 命令执行时后面所加的参数
-ObjC:链接器会把静态库中所有的 .o 文件都加载到可执行文件中(如果库中和加载库的程序有重复的文件,便会出现如上错误)
-all_load:链接器会把所有找到的目标文件都加载到可执行文件中
-force_load:把指定要加载路径的库文件全部加载,不影响其余库文件。

解决方法:
删除 -ObjC
使用 -force_load 加载 A 公司的 framework

. unknown type name 'NSString' NSObjcRuntime.h

问题描述:在项目中使用了一些第三方库,其中 有大量的 .c .mm 文件

原因分析:出现这个错误大部分是因为有 c, c++, OC 等混编造成

解决方案:在 .pch 文件中 添加以下判断代码: 
#ifdef __OBJC__ 
// your code
#endif

. AFNetWorking 下载文件时 progressHandler 不执行

问题描述:项目中使用 AFNetWorking 下载一个压缩包,但 progressHandler 怎么都不执行

原因分析:查看 AFNetWorking 的源码发现,progressHandler 回调是通过 KVO 监测 NSProgress 的 fractionCompleted 属性来回调的,没有回调说明 fractionCompleted 没有变化。继续找发现 NSURLResponse 的 expectedContentLength 值为 -1。

解决方案:expectedContentLength 出现 -1 说明 Http 响应头中没有设置 Content-Length,response 不知道下载文件的大小
通知后端人员在响应头中增加 Content-Length,值等于要下载的文件大小

. OC 主线程中调用同步函数造成死锁

NSLog(@"111");
dispatch_sync(dispatch_get_main_queue(), ^{
    NSLog(@"sync");
});
NSLog(@"222");

问题描述:执行以上代码,后台输出 111 后,执行到 dispatch_sync 这句代码时会报错 EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)

执行报错

原因分析

  1. 主线程是一个串行队列
  2. 执行 dispatch_sync 同步操作时,将 block 中的任务 NSLog(@"sync"); 添加到主线程队列末尾。
  3. NSLog(@"sync"); 要执行,需要它前面的任务执行完成,而它前面的任务是 dispatch_syncdispatch_sync要执行完成又需要 block 中的任务执行完成。
  4. 由此造成了互相等待,block 中的任务永远不会执行。

. Code signing fails with error 'resource fork, Finder information, or similar detritus not allowed'

问题描述:build & run 过程中一直这个错

原因分析:这是 iOS 10 引入的安全加固变化。代码签名不再允许应用包中的任何文件具有包含资源分支或Finder信息的扩展属性。不太明白。

解决方案:在 DerivedData 中找到打出的 .app 包,在终端中执行以下命令
xattr -lr Foo.app

执行后将会列出有问题的文件,依次修改后,clean then build 即可。 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容