Memory leaks 泄漏在分配UILabel时显示泄漏,[NSNotificationCenter addObserver]显示为“泄漏”;UIAccessibilityButtonShapeChangedNotification“;

Memory leaks 泄漏在分配UILabel时显示泄漏,[NSNotificationCenter addObserver]显示为“泄漏”;UIAccessibilityButtonShapeChangedNotification“;,memory-leaks,uikit,uilabel,nsnotificationcenter,Memory Leaks,Uikit,Uilabel,Nsnotificationcenter,我们第一次感到好奇的时候,我们最大的漏洞来自nsobserver帧 如果您查看堆栈跟踪,它看起来像是在初始化UILabel时发生的。 以下是我们的相关代码: final class TileView: UIView { fileprivate let digitLabel = UILabel() fileprivate let mainLineView = UIView() fileprivate let secondaryLineView = UIVie

我们第一次感到好奇的时候,我们最大的漏洞来自
nsobserver

如果您查看堆栈跟踪,它看起来像是在初始化UILabel时发生的。

以下是我们的相关代码:

final class TileView: UIView {
  fileprivate let digitLabel        = UILabel()
  fileprivate let mainLineView      = UIView()
  fileprivate let secondaryLineView = UIView()

我在for
addObserver
上设置了一个符号断点,并捕获了泄漏的帧。我查了一下登记册:

(lldb) register read
General Purpose Registers:
        x0 = 0x0000000283c937e0
        x1 = 0x00000001df7310a8  @"UIAccessibilityButtonShapesChangedNotification"
        x2 = 0x00000001d8b763e8  @"kCFNotificationAnyObject"
        x3 = 0x0000000000000400
        x4 = 0x0000000108e1dcb0
        x5 = 0x0000000000000000
        x6 = 0x000000016d72e4a0
        x7 = 0x0000000000000000
        x8 = 0x00000001a9493e74  Foundation`__57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_2
        x9 = 0x00000001d8d0e2b0  Foundation`__block_descriptor_48_e8_v16@?0@8l
       x10 = 0x000000010b814800
       x11 = 0x0000013f000001ff
       x12 = 0x000000010b8154a0
       x13 = 0x000001a1e23c6b97 (0x00000001e23c6b97) (void *)0x000001e23c738800
       x14 = 0x000000000000000f
       x15 = 0x00000001e238c95a  __CFCharToUniCharTable
       x16 = 0x00000001e23c6b90  (void *)0x000001a1e23c6bb9
       x17 = 0x00000001a7c0b250  libobjc.A.dylib`-[NSObject class]
       x18 = 0x0000000000000000
       x19 = 0x0000000108e1dcb0
       x20 = 0x00000001d5615e89  "_accessibilityButtonShapesChangedNotification:"
       x21 = 0x00000001df7310a8  @"UIAccessibilityButtonShapesChangedNotification"
       x22 = 0x0000000000000000
       x23 = 0x0000000283396370
       x24 = 0xfffffffef71e234f
       x25 = 0x0000000102e91000  "setShouldRasterize:"
       x26 = 0x0000000ffffffff8
       x27 = 0x00000001027c2054  Sideline`protocol witness for Sideline.SplitflapDelegate.splitflap(_: Sideline.Splitflap, builderForFlapAtIndex: Swift.Int) -> Sideline.FlapViewBuilder in conformance Sideline.SplitflapView : Sideline.SplitflapDelegate in Sideline at <compiler-generated>
       x28 = 0x000000010cc878d0
        fp = 0x000000016d72e500
        lr = 0x00000001a938d1a8  Foundation`-[NSNotificationCenter addObserver:selector:name:object:] + 256
        sp = 0x000000016d72e4a0
        pc = 0x00000001a938d224  Foundation`-[NSNotificationCenter addObserver:selector:name:object:] + 380
      cpsr = 0x60000000
(lldb)寄存器读取
一般用途登记册:
x0=0x0000000283c937e0
x1=0x00000001df7310a8@“UIAccessibilityButtonShapeChangedNotification”
x2=0x00000001d8b763e8@“kCFNotificationAnyObject”
x3=0x0000000000000400
x4=0x0000000108e1dcb0
x5=0x0000000000000000
x6=0x000000016d72e4a0
x7=0x0000000000000000
x8=0x00000001a9493e74基础`\uuu57-[NSNotificationCenter添加观察者:选择器:名称:对象:\\块\调用\u2
x9=0x00000001d8d0e2b0基础` \块\描述符\ 48 \ e8 \ v16@?0@8l
x10=0x000000010b814800
x11=0x0000013f000001ff
x12=0x000000010b8154a0
x13=0x000001a1e23c6b97(0x00000001e23c6b97)(无效*)0x000001e23c738800
x14=0x000000000000000f
x15=0x00000001e238c95a\uuuu CFCharToUniCharTable
x16=0x00000001e23c6b90(无效*)0x000001A1E23C6B9
x17=0x00000001a7c0b250 libobjc.A.dylib`-[NSObject类]
x18=0x0000000000000000
x19=0x0000000108e1dcb0
x20=0x00000001d5615e89“\u可访问性按钮形状更改通知:
x21=0x00000001df7310a8@“UIAccessibilityButtonShapeChangedNotification”
x22=0x0000000000000000
x23=0x0000000283396370
x24=0xFFFFFEF71E234F
x25=0x0000000102e91000“设置应光栅化:
x26=0x0000000FFFFFF8
x27=0x00000001027c2054 Sideline` Sideline.SplitflapDelegate.splitflap的协议见证(Sideline.splitflap,builderForFlapAtIndex:Swift.Int)->Sideline.FlapViewBuilder符合Sideline.SplitflapView:Sideline.SplitflapDelegate
x28=0x000000010cc878d0
fp=0x000000016d72e500
lr=0x00000001a938d1a8 Foundation`-[NSNotificationCenter添加观察者:选择器:名称:对象:][256
sp=0x000000016d72e4a0
pc=0x00000001a938d224 Foundation`-[NSNotificationCenter添加观察者:选择器:名称:对象:][380
cpsr=0x60000000
看到这个:“UIAccessibilityButtonShapesChangedNotification”

我们能做些什么吗?
可能只是UILabel/UIKit的一个bug?

或者我误解了泄漏报告的结果?

我在Xcode 12.3中遇到了类似的问题。你有没有找到解决方案…?嗯,不幸的是,那是很久以前的事了,所以我不记得了:\n我想我们只是从UII中删除了它。我在Xcode 12.3中遇到了类似的问题。你有没有找到一个解决方案…?嗯,不幸的是,那是很久以前的事了,所以我不记得了:\n我想我们最终只是把它从UI中删除了
(lldb) register read
General Purpose Registers:
        x0 = 0x0000000283c937e0
        x1 = 0x00000001df7310a8  @"UIAccessibilityButtonShapesChangedNotification"
        x2 = 0x00000001d8b763e8  @"kCFNotificationAnyObject"
        x3 = 0x0000000000000400
        x4 = 0x0000000108e1dcb0
        x5 = 0x0000000000000000
        x6 = 0x000000016d72e4a0
        x7 = 0x0000000000000000
        x8 = 0x00000001a9493e74  Foundation`__57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_2
        x9 = 0x00000001d8d0e2b0  Foundation`__block_descriptor_48_e8_v16@?0@8l
       x10 = 0x000000010b814800
       x11 = 0x0000013f000001ff
       x12 = 0x000000010b8154a0
       x13 = 0x000001a1e23c6b97 (0x00000001e23c6b97) (void *)0x000001e23c738800
       x14 = 0x000000000000000f
       x15 = 0x00000001e238c95a  __CFCharToUniCharTable
       x16 = 0x00000001e23c6b90  (void *)0x000001a1e23c6bb9
       x17 = 0x00000001a7c0b250  libobjc.A.dylib`-[NSObject class]
       x18 = 0x0000000000000000
       x19 = 0x0000000108e1dcb0
       x20 = 0x00000001d5615e89  "_accessibilityButtonShapesChangedNotification:"
       x21 = 0x00000001df7310a8  @"UIAccessibilityButtonShapesChangedNotification"
       x22 = 0x0000000000000000
       x23 = 0x0000000283396370
       x24 = 0xfffffffef71e234f
       x25 = 0x0000000102e91000  "setShouldRasterize:"
       x26 = 0x0000000ffffffff8
       x27 = 0x00000001027c2054  Sideline`protocol witness for Sideline.SplitflapDelegate.splitflap(_: Sideline.Splitflap, builderForFlapAtIndex: Swift.Int) -> Sideline.FlapViewBuilder in conformance Sideline.SplitflapView : Sideline.SplitflapDelegate in Sideline at <compiler-generated>
       x28 = 0x000000010cc878d0
        fp = 0x000000016d72e500
        lr = 0x00000001a938d1a8  Foundation`-[NSNotificationCenter addObserver:selector:name:object:] + 256
        sp = 0x000000016d72e4a0
        pc = 0x00000001a938d224  Foundation`-[NSNotificationCenter addObserver:selector:name:object:] + 380
      cpsr = 0x60000000