Skip to content

Commit 9f8f893

Browse files
committed
Fix memory leak caused by NSLocalizedString
1 parent 8d26021 commit 9f8f893

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

Sources/RswiftResources/Integrations/StringResource+Integrations.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@ extension String {
1212
switch source {
1313
case let .hosting(bundle):
1414
// With fallback to developmentValue
15-
let format = NSLocalizedString(key.description, tableName: tableName, bundle: bundle, value: developmentValue ?? "", comment: "")
15+
let format = if #available(macOS 12, iOS 15, tvOS 15, watchOS 8, *) {
16+
String(localized: .init(key.description), table: tableName, bundle: bundle, comment: "")
17+
} else {
18+
NSLocalizedString(key.description, tableName: tableName, bundle: bundle, value: developmentValue ?? "", comment: "")
19+
}
1620
self = String(format: format, locale: overrideLocale ?? Locale.current, arguments: arguments)
1721

1822
case let .selected(bundle, locale):
1923
// Don't use developmentValue with selected bundle/locale
20-
let format = NSLocalizedString(key.description, tableName: tableName, bundle: bundle, value: "", comment: "")
24+
let format = if #available(macOS 12, iOS 15, tvOS 15, watchOS 8, *) {
25+
String(localized: .init(key.description), table: tableName, bundle: bundle, comment: "")
26+
} else {
27+
NSLocalizedString(key.description, tableName: tableName, bundle: bundle, value: developmentValue ?? "", comment: "")
28+
}
2129
self = String(format: format, locale: overrideLocale ?? locale, arguments: arguments)
2230

2331
case .none:

0 commit comments

Comments
 (0)