Skip to content

Commit

Permalink
fix: fix retain cycle
Browse files Browse the repository at this point in the history
  • Loading branch information
Le0nX committed Feb 14, 2020
1 parent 30ff700 commit 25624b0
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
12 changes: 12 additions & 0 deletions WeakReference/WeakReference.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
148DAC0223F678E000B3BB98 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 148DAC0023F678E000B3BB98 /* LaunchScreen.storyboard */; };
148DAC0E23F6849100B3BB98 /* CurrencyPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 148DAC0D23F6849100B3BB98 /* CurrencyPresenter.swift */; };
148DAC1023F6866500B3BB98 /* CurrencyBusinessLogic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 148DAC0F23F6866500B3BB98 /* CurrencyBusinessLogic.swift */; };
148DAC1323F692F800B3BB98 /* WeakRefference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 148DAC1223F692F800B3BB98 /* WeakRefference.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand All @@ -28,6 +29,7 @@
148DAC0323F678E000B3BB98 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
148DAC0D23F6849100B3BB98 /* CurrencyPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyPresenter.swift; sourceTree = "<group>"; };
148DAC0F23F6866500B3BB98 /* CurrencyBusinessLogic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyBusinessLogic.swift; sourceTree = "<group>"; };
148DAC1223F692F800B3BB98 /* WeakRefference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeakRefference.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -61,6 +63,7 @@
isa = PBXGroup;
children = (
148DABF723F678DB00B3BB98 /* SceneDelegate.swift */,
148DAC1123F692C400B3BB98 /* Helpers */,
148DAC0C23F6831F00B3BB98 /* Business */,
148DAC0B23F6831300B3BB98 /* Presentation */,
148DAC0A23F682C800B3BB98 /* Resources */,
Expand Down Expand Up @@ -105,6 +108,14 @@
path = Business;
sourceTree = "<group>";
};
148DAC1123F692C400B3BB98 /* Helpers */ = {
isa = PBXGroup;
children = (
148DAC1223F692F800B3BB98 /* WeakRefference.swift */,
);
path = Helpers;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
Expand Down Expand Up @@ -178,6 +189,7 @@
files = (
148DABFA23F678DB00B3BB98 /* CurrencyViewController.swift in Sources */,
148DAC0E23F6849100B3BB98 /* CurrencyPresenter.swift in Sources */,
148DAC1323F692F800B3BB98 /* WeakRefference.swift in Sources */,
148DABF623F678DB00B3BB98 /* AppDelegate.swift in Sources */,
148DABF823F678DB00B3BB98 /* SceneDelegate.swift in Sources */,
148DAC1023F6866500B3BB98 /* CurrencyBusinessLogic.swift in Sources */,
Expand Down
23 changes: 23 additions & 0 deletions WeakReference/WeakReference/Helpers/WeakRefference.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//
// WeakRefference.swift
// WeakReference
//
// Created by Denis Nefedov on 14.02.2020.
// Copyright © 2020 Den4ik's Team. All rights reserved.
//

import Foundation

final class WeakRefference<T: AnyObject> {
weak var ref: T?

init (_ object: T) {
self.ref = object
}
}

extension WeakRefference: CurrencyPresenterOutput where T: CurrencyPresenterOutput {
func present(_ currency: CurrencyPresenterModel) {
ref?.present(currency)
}
}
2 changes: 1 addition & 1 deletion WeakReference/WeakReference/SceneDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
if let windowScene = scene as? UIWindowScene {

if let vc = window?.rootViewController as? CurrencyViewController {
let presenter = CurrencyPresenter(output: vc) // Утечка памяти
let presenter = CurrencyPresenter(output: WeakRefference(vc)) // Утечка памяти исправлена
let currencyUpdater = CurrencyUpdater(output: presenter)
vc.updateCurrency = currencyUpdater.update
}
Expand Down

0 comments on commit 25624b0

Please sign in to comment.