還有一種情況:
crash 2、
Thread name: main Dispatch queue: Internal _UICache queue
Thread 0 Crashed:
0 libobjc.A.dylib 0x0000000195caadd0 objc_release
1 CoreFoundation 0x00000001810cd398 -[__NSDictionaryM removeAllObjects]
2 libdispatch.dylib 0x0000000180dd381c _dispatch_client_callout
3 libdispatch.dylib 0x0000000180de2910 _dispatch_lane_barrier_sync_invoke_and_complete
4 UIFoundation 0x000000018a4d8910 __50-[_UICache setClearsCacheOnApplicationBackground:]_block_invoke
5 Foundation 0x000000018246a53c -[__NSObserver _doit:]
6 CoreFoundation 0x00000001811416d4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
7 CoreFoundation 0x000000018114167c ___CFXRegistrationPost_block_invoke
8 CoreFoundation 0x0000000181140be8 _CFXRegistrationPost
9 CoreFoundation 0x00000001811405a8 _CFXNotificationPost
10 Foundation 0x00000001824456ac -[NSNotificationCenter postNotificationName:object:userInfo:]
11 UIKitCore 0x0000000183be0438 __47-[UIApplication _applicationDidEnterBackground]_block_invoke
12 UIKitCore 0x00000001834b94d8 +[UIViewController _performWithoutDeferringTransitionsAllowingAnimation:actions:]
13 UIKitCore 0x0000000183be01d0 -[UIApplication _applicationDidEnterBackground]
14 UIKitCore 0x000000018322cc58 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke_2
iOS crash分析實(shí)踐背景 分享一些過(guò)去兩個(gè)月遇到的crash。 正文 一、運(yùn)行時(shí)錯(cuò)誤 1、UICollectionView的調(diào)用順序 從堆棧可以看出是indexPath無(wú)效,通常是indexPa...
落影大哥,最近收集到一個(gè)非常難解的crash問(wèn)題,都在主線程,crash日志如下:
crash 1、
Thread name: main Dispatch queue: Internal _UICache queue
Thread 0 Crashed:
0 libobjc.A.dylib 0x000000018b4d8020 objc_retain
1 UIFoundation 0x000000018ee01f78 __25-[_UICache objectForKey:]_block_invoke
2 libdispatch.dylib 0x000000018b463184 _dispatch_client_callout
3 libdispatch.dylib 0x000000018b446dc8 _dispatch_lane_barrier_sync_invoke_and_complete
4 UIFoundation 0x000000018ed47e98 -[_UICache objectForKey:]
5 UIFoundation 0x000000018ede5504 UINewFontIgnoringLinkCheck
6 UIFoundation 0x000000018ed48074 +[UIFont systemFontOfSize:traits:]
我們目前能知道的就是,UIFont的緩存機(jī)制,在_UICache(進(jìn)入后臺(tái)釋放UIFont,創(chuàng)建時(shí)使用UIFont緩存)中進(jìn)行釋放和持有時(shí)產(chǎn)生的crash。
現(xiàn)在就是找不到原因,為什么會(huì)產(chǎn)生這種crash
不知道大哥之前是否遇到過(guò)這種問(wèn)題呢
iOS crash分析實(shí)踐背景 分享一些過(guò)去兩個(gè)月遇到的crash。 正文 一、運(yùn)行時(shí)錯(cuò)誤 1、UICollectionView的調(diào)用順序 從堆棧可以看出是indexPath無(wú)效,通常是indexPa...
首先看一段AF2.x經(jīng)典代碼: 首先我們要明確一個(gè)概念,線程一般都是一次執(zhí)行完任務(wù),就銷毀了。 而添加了runloop,并運(yùn)行起來(lái),實(shí)際上是添加了一個(gè)do,while循環(huán),這...
就是不要每次都去復(fù)用池中取cell,自己用一個(gè)屬性保存cell,要更新cell,就直接更新自己保存的cell
對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄 現(xiàn)象: 在UITableViewCell刷新時(shí),即調(diào)用- (UITableViewCell)tableView:(...
@落影l(fā)oyinglin 所以NSMutableArray的話,如果為了共享數(shù)據(jù)是使用strong的吧。
我理解的是:使用copy的初衷就是為了傳遞后,數(shù)據(jù)獨(dú)立,不會(huì)相互影響。NSArray本身是不可變的,進(jìn)行寫(xiě)操作后也是新的對(duì)象地址,所以使用strong和copy效果一樣的。
但是就怕外界傳進(jìn)來(lái)的NSArray是NSMutableArray類型,在外界會(huì)修改,如果使用strong就會(huì)導(dǎo)致數(shù)據(jù)相互影響。所以建議使用copy修改NSArray。
如果就是需要外界的NSMutableArray用來(lái)共享數(shù)據(jù),則使用strong。
iOS crash分析實(shí)踐背景 分享一些過(guò)去兩個(gè)月遇到的crash。 正文 一、運(yùn)行時(shí)錯(cuò)誤 1、UICollectionView的調(diào)用順序 從堆??梢钥闯鍪莍ndexPath無(wú)效,通常是indexPa...
@落影l(fā)oyinglin 了解了,謝謝了哈。
之前遇到一個(gè)字節(jié)的面試官問(wèn)我修飾數(shù)組用什么關(guān)鍵字,我說(shuō)看業(yè)務(wù)情況,比如有些業(yè)務(wù)就是需要讀寫(xiě)共享同一個(gè)數(shù)組,那我就會(huì)用strong,否則用copy。但是面試官的意思就是使用copy,真的是只要用數(shù)組就用copy嗎?
iOS crash分析實(shí)踐背景 分享一些過(guò)去兩個(gè)月遇到的crash。 正文 一、運(yùn)行時(shí)錯(cuò)誤 1、UICollectionView的調(diào)用順序 從堆棧可以看出是indexPath無(wú)效,通常是indexPa...
最近遇到一個(gè)奇怪的問(wèn)題,Demo如下:
#import "TestObject.h"
@interface TestObject ()
@property (nonatomic, strong) NSDictionary *views;
@end
@implementation TestObject
- (instancetype)init {
self = [super init];
if (self) {
self.views = @{@"1" : @"a",
@"2" : @"b"};
}
return self;
}
- (TestObject *)test {
if (!self.views) {
return self;
}
for (NSString *view in self.views.allKeys) {
NSLog(@"== %@ ==", view);
}
return self;
}
- (void)dealloc {
[self test];
}
@end
該對(duì)象釋放時(shí)必crash,原因是重復(fù)釋放了
如果刪除test方法中的
if (!self.views) {
return self;
}
或者刪除
for (NSString *view in self.views.allKeys) {
NSLog(@"== %@ ==", view);
}
或者將for in改成for
都不會(huì)crash。。。我傻了
iOS crash分析實(shí)踐背景 分享一些過(guò)去兩個(gè)月遇到的crash。 正文 一、運(yùn)行時(shí)錯(cuò)誤 1、UICollectionView的調(diào)用順序 從堆??梢钥闯鍪莍ndexPath無(wú)效,通常是indexPa...
前言:Category在Objc中非常重要,在平時(shí)的iOS的面試中針對(duì)Category的問(wèn)題更是層出不窮,如:1)Category中的方法加載順序?2)Category中的方...
為什么題目3可以正常運(yùn)行?(答案見(jiàn)附錄最后一篇)
這個(gè)附錄最后一篇不就是當(dāng)前這篇博客嗎
iOS property的多線程問(wèn)題解析正文 問(wèn)題列表 1、以下這段代碼,在主線程執(zhí)行會(huì)輸出什么? 2、稍作修改,以下代碼在主線程執(zhí)行會(huì)輸出什么? 3、換了個(gè)類型,以下代碼在主線程執(zhí)行會(huì)輸出什么? 問(wèn)題分析 題目1...
分類實(shí)現(xiàn)多繼承,我的理解是原類繼承了自己的多個(gè)分類的方法吧
iOS多繼承的實(shí)現(xiàn)及區(qū)別來(lái)自我的個(gè)人博客Minecode.link 多繼承可以允許子類從多個(gè)父類派生,而Objective-C并不支持多繼承,但我們?nèi)钥砷g接實(shí)現(xiàn)。 Objective-C實(shí)現(xiàn)多繼承主...
協(xié)議定義的屬性只是自動(dòng)聲明set/get方法,沒(méi)有對(duì)應(yīng)的實(shí)例對(duì)象_property。
iOS多繼承的實(shí)現(xiàn)及區(qū)別來(lái)自我的個(gè)人博客Minecode.link 多繼承可以允許子類從多個(gè)父類派生,而Objective-C并不支持多繼承,但我們?nèi)钥砷g接實(shí)現(xiàn)。 Objective-C實(shí)現(xiàn)多繼承主...
@So_Cool 我目前的解決策略就是文章中寫(xiě)的啊~
對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄 現(xiàn)象: 在UITableViewCell刷新時(shí),即調(diào)用- (UITableViewCell)tableView:(...
謝謝你的肯定啦,如果你可以使用一下,提點(diǎn)意見(jiàn)就更好了~
一個(gè)基于CAAnimation的動(dòng)畫(huà)工具BinAnimation Link to GitHub 為什么使用 必要性:作為 iOS 開(kāi)發(fā)工程師,在日常的開(kāi)發(fā)工作中,雖然不需要像游戲開(kāi)發(fā)一樣設(shè)計(jì)各式各樣酷炫的動(dòng)畫(huà),但是...
首先,你是我的第一位評(píng)論者,感謝?。。?img src="http://static.jianshu.io/assets/emojis/smile.png" alt=":smile:" title=":smile:" class="emoji" width="20" height="20">
但是我這邊的場(chǎng)景不是上下滑動(dòng),而是調(diào)用[self.tableview reloadData];的時(shí)候,會(huì)發(fā)現(xiàn)cell緩存池中的cell沒(méi)有動(dòng)畫(huà)了。
對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄對(duì)UITableViewCell刷新造成動(dòng)畫(huà)失效的問(wèn)題記錄 現(xiàn)象: 在UITableViewCell刷新時(shí),即調(diào)用- (UITableViewCell)tableView:(...
BinCodeScannerSDK BinCodeScannerSDK 是一個(gè)掃碼器。 我的優(yōu)勢(shì)是什么 其實(shí) iOS 原生的掃碼器已經(jīng)可以應(yīng)對(duì)絕大多數(shù)的使用場(chǎng)景,但是針對(duì)特殊...