由于针对framework瘦身一直在日程中,但由于其他需求插入进来优先级P0-0,所以一直没做瘦身,最近闲暇有时间做瘦身,所以通过网站搜索到关于mac-O文件的分析,查看,会使用到MachOView,通过githubhttps://github.com/gdbinit/MachOView或官网https://sourceforge.net/projects/machoview/下载到的版本在Mac系统10.14.5下均出现闪退现象。所以也摸索着进行解决。主要解决在2个地方,具体如下:
1、
上述就是最基本的解决方法,有效,但使用起来还是崩溃。
2、
然后继续查找发现在Document.mm line 449-line 447中关于隐藏stopButton(也就是那个x号的icon)时经常崩溃,所以大概断定是线程问题,所以将此处代码改为:
- (void)handleThreadStateChanged:(NSNotification *)notification
{
if ([notification object] == dataController)
{
NSString * threadState = [[notification userInfo] objectForKey:MVStatusUserInfoKey];
if ([threadState isEqualToString:MVStatusTaskStarted] == YES)
{
if (OSAtomicIncrement32(&threadCount) == 1)
{
dispatch_async(dispatch_get_main_queue(), ^{
[progressIndicator setUsesThreadedAnimation:YES];
[progressIndicator startAnimation:nil];
[stopButton setHidden:NO];
});
}
}
else if ([threadState isEqualToString:MVStatusTaskTerminated] == YES)
{
if (OSAtomicDecrement32(&threadCount) == 0)
{
dispatch_async(dispatch_get_main_queue(), ^{
[progressIndicator stopAnimation:nil];
[statusText setStringValue:@""];
[stopButton setHidden:YES];
});
}
}
}
}
主要是让
[progressIndicator setUsesThreadedAnimation:YES];
[progressIndicator startAnimation:nil];
[stopButton setHidden:NO];
和
[progressIndicator stopAnimation:nil];
[statusText setStringValue:@""];
[stopButton setHidden:YES];
在主线程执行,更改完毕之后,run,然后再将MachOView.app拷贝到应用程序中,打开,目前没发现崩溃现象~
时间匆忙,就写到这,如果按照此方法更改之后出现崩溃或者有其他交流的,请留言!
初到此地,请多包涵!
网友评论