This is getting interesting.

I added your suggested test code (set to execute once):
class FontSelectorDialog : UITableViewController {

        static let chooser : ColorChooser = ColorChooser()
        
        override func viewDidAppear(_ animated: Bool) {
                super.viewDidAppear(animated)
                FontSelectorDialog.chooser.textChooserType = .text
        }

        < . . . >
}

BY THE WAY — I didn’t think to mention this previously, but the “leaking” code 
is in a framework and I put the suggested test code in the same framework.

Using Xcode 8.3:

(1) Running Simulator for iPhone 7+ (10.3), profiling the code, neither your 
suggested test code NOR the original code shows a leak in the Leaks Instrument.

(2) Running on an iPad Air 2 (10.2), profiling the code, your suggested test 
code does NOT show a leak, but the original code DOES. (The stack trace for the 
leak point is at the bottom of this email.)

I haven’t taken the next step of attempting to build a simple example to see if 
I can duplicate the problem in a simple project. I’d like to pursue this 
because it is increasingly looking like a “not my” bug, and I’d like to prevent 
others from spending as much time on this issue as I have already.

Cheers,

Rick Aurbach


> On Mar 28, 2017, at 4:14 AM, Alex Blewitt <alb...@apple.com> wrote:
> 
>> On 28 Mar 2017, at 05:41, Rick Aurbach <rla...@icloud.com> wrote:
>> 
>> That wouldn’t work directly. The “leak” occurs when processing a segue 
>> called in response to a user button push. (I suppose I could attempt to wire 
>> up a UI Test, but would rather not go down that route.)
>> 
>> What I can try is to see if I can create a simple, artificial example. If it 
>> also reports a leak, then I could try looping it. I’ll look into it in the 
>> morning.
> 
> You could try doing something like:
> 
> static let choser:ColorChoser = ColorChoser()
> choser.textChoserType = .text
> 
> Run that in Xcode and see if it shows a leak.
> 
> Alex


   0 libsystem_malloc.dylib malloc_zone_malloc
   1 libsystem_malloc.dylib malloc
   2 libswiftCore.dylib swift_slowAlloc
   3 libswiftCore.dylib _swift_allocObject_
   4 libswiftCore.dylib _swift_allocObject_
   5 RLAFontSelector specialized RLAFontSelectorDialog.prepare(for : 
UIStoryboardSegue, sender : Any?) -> () 
/Users/rlaurb/Projects/RLAFontSelector/Sources/RLAFontSelectorDialog.swift:0
   6 RLAFontSelector RLAFontSelectorDialog.prepare(for : UIStoryboardSegue, 
sender : Any?) -> () 
/Users/rlaurb/Projects/RLAFontSelector/Sources/RLAFontSelectorDialog.swift:0
   7 RLAFontSelector @objc RLAFontSelectorDialog.prepare(for : 
UIStoryboardSegue, sender : Any?) -> () 
/Users/rlaurb/Projects/RLAFontSelector/Sources/RLAFontSelectorDialog.swift:0
   8 UIKit -[UIStoryboardSegueTemplate 
_performWithDestinationViewController:sender:]
   9 UIKit -[UIStoryboardSegueTemplate _perform:]
  10 UIKit -[UIStoryboardSegueTemplate perform:]
  11 UIKit -[UITableView 
_selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]
  12 UIKit -[UITableView _userSelectRowAtPendingSelectionIndexPath:]
  13 UIKit _runAfterCACommitDeferredBlocks
  14 UIKit _cleanUpAfterCAFlushAndRunDeferredBlocks
  15 UIKit _afterCACommitHandler
  16 CoreFoundation 
__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
  17 CoreFoundation __CFRunLoopDoObservers
  18 CoreFoundation __CFRunLoopRun
  19 CoreFoundation CFRunLoopRunSpecific
  20 GraphicsServices GSEventRunModal
  21 UIKit -[UIApplication _run]
  22 UIKit UIApplicationMain
  23 PoetsCorner main 
/Users/rlaurb/Projects/PoetsCorner/PoetsCorner/SettingsController.swift:13
  24 libdyld.dylib start

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to