关于MachOView闪退的解决方法

2019-08-05  本文已影响0人  TungKamLau

由于针对framework瘦身一直在日程中,但由于其他需求插入进来优先级P0-0,所以一直没做瘦身,最近闲暇有时间做瘦身,所以通过网站搜索到关于mac-O文件的分析,查看,会使用到MachOView,通过githubhttps://github.com/gdbinit/MachOView或官网https://sourceforge.net/projects/machoview/下载到的版本在Mac系统10.14.5下均出现闪退现象。所以也摸索着进行解决。主要解决在2个地方,具体如下:
1、

image.png

上述就是最基本的解决方法,有效,但使用起来还是崩溃。
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拷贝到应用程序中,打开,目前没发现崩溃现象~
时间匆忙,就写到这,如果按照此方法更改之后出现崩溃或者有其他交流的,请留言!
初到此地,请多包涵!

上一篇下一篇

猜你喜欢

热点阅读