From f7b6fbc9e512e2eca911bb586e979c1222b8b3f9 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 2 Feb 2025 22:09:58 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20Fixes=20memory=20leaks=20caused?= =?UTF-8?q?=20by=20NSString=20usage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared/ArticleRendering/ArticleRenderer.swift | 6 +++--- Shared/ArticleStyles/ArticleTheme.swift | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Shared/ArticleRendering/ArticleRenderer.swift b/Shared/ArticleRendering/ArticleRenderer.swift index 567c5792c..99dbaead5 100644 --- a/Shared/ArticleRendering/ArticleRenderer.swift +++ b/Shared/ArticleRendering/ArticleRenderer.swift @@ -31,7 +31,7 @@ struct ArticleRenderer { init(name: String) { url = Bundle.main.url(forResource: name, withExtension: "html")! baseURL = url.deletingLastPathComponent() - html = try! NSString(contentsOfFile: url.path, encoding: String.Encoding.utf8.rawValue) as String + html = try! String(contentsOfFile: url.path, encoding: .utf8) } } @@ -185,13 +185,13 @@ private extension ArticleRenderer { static var defaultStyleSheet: String = { let path = Bundle.main.path(forResource: "styleSheet", ofType: "css")! - let s = try! NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue) + let s = try! String(contentsOfFile: path, encoding: .utf8) return "\n\(s)\n" }() static let defaultTemplate: String = { let path = Bundle.main.path(forResource: "template", ofType: "html")! - let s = try! NSString(contentsOfFile: path, encoding: String.Encoding.utf8.rawValue) + let s = try! String(contentsOfFile: path, encoding: .utf8) return s as String }() diff --git a/Shared/ArticleStyles/ArticleTheme.swift b/Shared/ArticleStyles/ArticleTheme.swift index 61438bf4b..9c1e031a1 100644 --- a/Shared/ArticleStyles/ArticleTheme.swift +++ b/Shared/ArticleStyles/ArticleTheme.swift @@ -86,7 +86,8 @@ struct ArticleTheme: Equatable { return nil } - if let s = try? NSString(contentsOfFile: f, usedEncoding: nil) as String { + var encoding = String.Encoding.utf8 + if let s = try? String(contentsOfFile: f, usedEncoding: &encoding) { return s } return nil