Ios 在回溯中不可见时查找调用方

Ios 在回溯中不可见时查找调用方,ios,objective-c,xcode,Ios,Objective C,Xcode,我的应用程序达到了100%的CPU,并且持续消耗更多的RAM。我使用了一些工具,发现了令人不快的代码行,它似乎是在某种无限循环中被调用的。然而,回溯并没有给出调用方的任何指示,只是给出了调用它的库函数 我已经搜索了整个代码库,没有找到任何调用违规函数的用户代码 我正在寻找一种方法来深入挖掘并发现可能导致重复调用\u setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenera

我的应用程序达到了100%的CPU,并且持续消耗更多的RAM。我使用了一些工具,发现了令人不快的代码行,它似乎是在某种无限循环中被调用的。然而,回溯并没有给出调用方的任何指示,只是给出了调用它的库函数

我已经搜索了整个代码库,没有找到任何调用违规函数的用户代码

我正在寻找一种方法来深入挖掘并发现可能导致重复调用
\u setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion

回溯:

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1
  * frame #0: 0x0000000105bf6187 Demo App`-[UIImageView(self=0x00007fa291f85660, _cmd="setTintColor:", color=0x000060000004d020) setTintColor:] at UIImageView+Utils.m:21
    frame #1: 0x000000010677d0bc UIKit`+[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 560
    frame #2: 0x000000010677d599 UIKit`+[UIView(UIViewAnimationWithBlocks) animateWithDuration:delay:options:animations:completion:] + 99
    frame #3: 0x0000000106b24792 UIKit`-[UIButton _updateImageView] + 1005
    frame #4: 0x0000000106b24fc4 UIKit`-[UIButton layoutSubviews] + 211
    frame #5: 0x000000010678a4f1 UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1439
    frame #6: 0x000000010d29149a QuartzCore`-[CALayer layoutSublayers] + 153
    frame #7: 0x000000010d295589 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 401
    frame #8: 0x0000000106774531 UIKit`-[UIView(Hierarchy) layoutBelowIfNeeded] + 662
    frame #9: 0x0000000107301063 UIKit`-[UIInputSetHostView layoutIfNeeded] + 104
    frame #10: 0x0000000106f7a08e UIKit`-[_UIRemoteKeyboards ignoreLayoutNotifications:] + 27
    frame #11: 0x0000000107311838 UIKit`__43-[UIInputWindowController setInputViewSet:]_block_invoke + 125
    frame #12: 0x000000010677b6ec UIKit`+[UIView(Animation) performWithoutAnimation:] + 90
    frame #13: 0x000000010731152f UIKit`-[UIInputWindowController setInputViewSet:] + 702
    frame #14: 0x00000001073089d1 UIKit`-[UIInputWindowController performOperations:withAnimationStyle:] + 50
    frame #15: 0x0000000106ea9f9e UIKit`-[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] + 1081
    frame #16: 0x00000001068ecacd UIKit`-[UIResponder(UIResponderInputViewAdditions) reloadInputViews] + 81
    frame #17: 0x00000001073d1cc7 UIKit`-[UITextField becomeFirstResponder] + 690

```

您可以发布UIImageView扩展的内容吗?似乎布局子视图中的某些内容导致视图再次显示为布局子视图。我们需要看看您的代码在这里实际做了什么才能了解更多。在我为自己做这件事的时候,我有一个@property someval(setter=setSomeval:),在setSomeval:,我会使用self.someval=p,导致对setter的无限递归调用。解决方案:_someval=p;事实证明,被调用的扩展方法的名称与UIImageView方法的名称相同。我可以在方法中调用super,它解决了问题。您可以发布UIImageView扩展的内容吗?似乎布局子视图中的某些内容导致视图再次显示为布局子视图。我们需要看看您的代码在这里实际做了什么才能了解更多。在我为自己做这件事的时候,我有一个@property someval(setter=setSomeval:),在setSomeval:,我会使用self.someval=p,导致对setter的无限递归调用。解决方案:_someval=p;事实证明,被调用的扩展方法的名称与UIImageView方法的名称相同。我能够在方法中调用super,它解决了这个问题。