Skip to content

Commit 81cf4ec

Browse files
committed
Eliminated warnings about associated objects, by replacing UIBarButtonItem extension with SwiftBarButtonItem.
The warning text was this: Forming 'UnsafeRawPointer' to an inout variable of type String exposes the internal representation rather than the string contents.
1 parent b07921d commit 81cf4ec

4 files changed

Lines changed: 43 additions & 38 deletions

File tree

Source/TriangleDraw.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
42646E7F22E4785E00914600 /* EmailWithFeedback.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42646E7E22E4785E00914600 /* EmailWithFeedback.swift */; };
5656
42646E8122E4A08800914600 /* HCMenuViewController+SharePDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42646E8022E4A08800914600 /* HCMenuViewController+SharePDF.swift */; };
5757
4269A6752198338E00A6796C /* URLDisplayNameTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4269A6742198338E00A6796C /* URLDisplayNameTests.swift */; };
58-
4269A67E2198E65B00A6796C /* UIBarButtonItem+ActionClosure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4269A67D2198E65B00A6796C /* UIBarButtonItem+ActionClosure.swift */; };
58+
4269A67E2198E65B00A6796C /* SwiftBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4269A67D2198E65B00A6796C /* SwiftBarButtonItem.swift */; };
5959
426B951122CFE2B000DB9359 /* BrowserViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 426B951022CFE2B000DB9359 /* BrowserViewController.storyboard */; };
6060
426B951322CFE86500DB9359 /* CanvasViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 426B951222CFE86500DB9359 /* CanvasViewController.storyboard */; };
6161
426B951722D0A5FE00DB9359 /* BrowserViewController+PresentDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 426B951622D0A5FE00DB9359 /* BrowserViewController+PresentDocument.swift */; };
@@ -417,7 +417,7 @@
417417
42646E7E22E4785E00914600 /* EmailWithFeedback.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmailWithFeedback.swift; sourceTree = "<group>"; };
418418
42646E8022E4A08800914600 /* HCMenuViewController+SharePDF.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "HCMenuViewController+SharePDF.swift"; sourceTree = "<group>"; };
419419
4269A6742198338E00A6796C /* URLDisplayNameTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLDisplayNameTests.swift; sourceTree = "<group>"; };
420-
4269A67D2198E65B00A6796C /* UIBarButtonItem+ActionClosure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+ActionClosure.swift"; sourceTree = "<group>"; };
420+
4269A67D2198E65B00A6796C /* SwiftBarButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftBarButtonItem.swift; sourceTree = "<group>"; };
421421
426B951022CFE2B000DB9359 /* BrowserViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = BrowserViewController.storyboard; sourceTree = "<group>"; };
422422
426B951222CFE86500DB9359 /* CanvasViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CanvasViewController.storyboard; sourceTree = "<group>"; };
423423
426B951622D0A5FE00DB9359 /* BrowserViewController+PresentDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BrowserViewController+PresentDocument.swift"; sourceTree = "<group>"; };
@@ -1237,8 +1237,8 @@
12371237
42608ED121CE832000A99669 /* CGRect+FitSizeInSize.swift */,
12381238
42608ECF21CE78F700A99669 /* CGSize+Inset.swift */,
12391239
42A228B321A0D292009A2819 /* CGSize+MinMax.swift */,
1240+
4269A67D2198E65B00A6796C /* SwiftBarButtonItem.swift */,
12401241
42E227B4210373E000D112E7 /* TDCalculateCubicBezier.swift */,
1241-
4269A67D2198E65B00A6796C /* UIBarButtonItem+ActionClosure.swift */,
12421242
42E227B6210373E000D112E7 /* UIBarButtonItem+NegativeSpacer.swift */,
12431243
42E227C0210373E000D112E7 /* UIColorExtensions.swift */,
12441244
42608ECD21CE77C700A99669 /* UIEdgeInsets+InsetsByAdding.swift */,
@@ -1903,7 +1903,7 @@
19031903
42AF941C215451C200D07373 /* HCBuildEdgeAroundHexagon.swift in Sources */,
19041904
42608ED221CE832000A99669 /* CGRect+FitSizeInSize.swift in Sources */,
19051905
426B951722D0A5FE00DB9359 /* BrowserViewController+PresentDocument.swift in Sources */,
1906-
4269A67E2198E65B00A6796C /* UIBarButtonItem+ActionClosure.swift in Sources */,
1906+
4269A67E2198E65B00A6796C /* SwiftBarButtonItem.swift in Sources */,
19071907
42C6B6EC21A74781004E7F58 /* HCZoomToFit.swift in Sources */,
19081908
42608ED621CEA4DB00A99669 /* CanvasViewController+ConfigureToolbar.swift in Sources */,
19091909
42E227D0210373E000D112E7 /* UIColorExtensions.swift in Sources */,

Source/TriangleDrawMain/Canvas/HCToolbar.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,18 +193,16 @@ class HCToolbar: UIToolbar {
193193
}
194194

195195
private func imageItem(_ image: Image, _ actionBlock: @escaping HCToolbarHandlers.ActionBlock) -> UIBarButtonItem {
196-
let barButtonItem = UIBarButtonItem(image: image.image, style: .plain, target: nil, action: nil)
197-
barButtonItem.actionClosure = { (_) in
198-
actionBlock()
199-
}
200-
return barButtonItem
196+
let actionHandler: SwiftBarButtonItem.ActionHandler = { (_) in
197+
actionBlock()
198+
}
199+
return SwiftBarButtonItem(image: image.image, style: .plain, actionHandler: actionHandler)
201200
}
202201

203202
private func textItem(_ title: String, _ actionBlock: @escaping HCToolbarHandlers.ActionBlock) -> UIBarButtonItem {
204-
let barButtonItem = UIBarButtonItem(title: title, style: .plain, target: nil, action: nil)
205-
barButtonItem.actionClosure = { (_) in
206-
actionBlock()
207-
}
208-
return barButtonItem
203+
let actionHandler: SwiftBarButtonItem.ActionHandler = { (_) in
204+
actionBlock()
205+
}
206+
return SwiftBarButtonItem(title: title, style: .plain, actionHandler: actionHandler)
209207
}
210208
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// MIT license. Copyright (c) 2023 TriangleDraw. All rights reserved.
2+
import UIKit
3+
4+
/// See: https://stackoverflow.com/a/56637655/78336
5+
class SwiftBarButtonItem: UIBarButtonItem {
6+
typealias ActionHandler = (UIBarButtonItem) -> Void
7+
8+
private var actionHandler: ActionHandler?
9+
10+
convenience init(image: UIImage?, style: UIBarButtonItem.Style, actionHandler: ActionHandler?) {
11+
self.init(image: image, style: style, target: nil, action: #selector(barButtonItemPressed(sender:)))
12+
target = self
13+
self.actionHandler = actionHandler
14+
}
15+
16+
convenience init(title: String?, style: UIBarButtonItem.Style, actionHandler: ActionHandler?) {
17+
self.init(title: title, style: style, target: nil, action: #selector(barButtonItemPressed(sender:)))
18+
target = self
19+
self.actionHandler = actionHandler
20+
}
21+
22+
convenience init(barButtonSystemItem systemItem: UIBarButtonItem.SystemItem, actionHandler: ActionHandler?) {
23+
self.init(barButtonSystemItem: systemItem, target: nil, action: #selector(barButtonItemPressed(sender:)))
24+
target = self
25+
self.actionHandler = actionHandler
26+
}
27+
28+
@objc func barButtonItemPressed(sender: UIBarButtonItem) {
29+
actionHandler?(sender)
30+
}
31+
}

Source/TriangleDrawMain/UIKit/UIBarButtonItem+ActionClosure.swift

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)