2016-11-06 6 views
6

나는 악기를 실행하고 누수를 확인하고있어, 그건 보여주는 누출 주로 구성 10.누출 3/아이폰 OS 10

누출은 iOS 10에서만 나타나지만 iOS 9.x에서는 정상적으로 보입니다. 게다가 iOS 10에서는 UISwitch도 할당을 해제하지 않는 것으로 보입니다.

현재 저는 사전 사용을 피하려고하는 모든 종류의 문제 해결 방법을 만들었으며 어떤 경우에는 배열을 사용하여 코드를 작성하는 것을 매우 짜증나게했습니다.

질문 :

내가 이것에 대해 걱정이 모든 누수를 수정하거나 기다릴 시도가 향후 업데이트에서 해결 될 것입니다 희망 하는가? 그렇다면 어떤 버그가 알려졌는지 등을 확인할 수 있습니까?

답변

4

나는 동일한 문제가있어서 많은 시간을 보냈다. Objective-C 코드에서 Swift 개체를 만들고 Swift 개체에 Swift 사전 속성이 있으면이 누수가 나타납니다. 네이티브 Swift 사전을 NSDictionary로 변경하면 모든 코드가 Swift이고 더 유용하게 누출되지 않습니다. 이것은 Swift Set와 NSSet에도 적용됩니다. 나는 또한 누수가 악기가 누출보고 아이폰 OS (10)과하지 누수 아이폰 OS 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>

+0

는 간단한 재현 예를 들어 줄 수 그건 애플에게보고 할 수 있을까? – matt

+0

@matt 문제를 재현하는 샘플 코드를 추가했습니다. 애플 용 레이더 작업. – bdmontz

+0

아주 멋지게 작성된 코드. 나는 그것을 구현하고 실행하는데 문제가 없었다. 그러나, 나는 그것이 어떻게 _leak_ 볼 수 없습니다. 예를 들어, 메모리 그래프 도구가 문제를보고하지 않습니다. – matt