您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Swift 3 / iOS 10泄漏

Swift 3 / iOS 10泄漏

我遇到了同样的问题,花了很多时间进行挖掘。我发现,如果您从Objective- C代码创建Swift对象,并且Swift对象具有本机Swift字典属性,则会看到此泄漏。如果所有代码都是Swift,则不会发生这种情况,更有用的是,如果将本机Swift字典更改为NSDictionary,也不会泄漏。这也适用于Swift Set和NSSet。我还看到泄漏发生在iOS 10而不是iOS 9上。

// LeakySwiftObject.swift
class LeakySwiftObject: NSObject {
    let dict = [String: String]() // <- Any native Swift dictionary will reproduce the leak
}

// ObjectiveCObject.h
@class LeakySwiftObject;

@interface ObjectiveCObject : NSObject
@property (strong) LeakySwiftObject *leaky;
@end

// ObjectiveCObject.m
@implementation ObjectiveCObject

- (instancetype)init
{
    self = [super init];
    if (self) {
        self.leaky = [LeakySwiftObject new];
    }
    return self;
}

@end

// ViewController.swift
class ViewController: UIViewController {
    let testObj = ObjectiveCObject()
}

泄漏工具报告泄漏: _NativeDictionaryStorageImpl <String,String> _NativeDictionaryStorageOwner <String,String>

Swift 2022/1/1 18:13:38 有604人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶