• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Release mode bindings crash and release pools
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Release mode bindings crash and release pools


  • Subject: Re: Release mode bindings crash and release pools
  • From: Jonathan Mitchell <email@hidden>
  • Date: Sat, 17 Jun 2017 14:36:03 +0100

> On 17 Jun 2017, at 14:21, Charles Srstka <email@hidden> wrote:
>
>> On Jun 17, 2017, at 5:32 AM, Jonathan Mitchell <email@hidden
>> <mailto:email@hidden>> wrote:
>>
>>> On 16 Jun 2017, at 23:18, Quincey Morris
>>> <email@hidden
>>> <mailto:email@hidden>> wrote:
>>>
>>> On Jun 16, 2017, at 14:41 , Jonathan Mitchell <email@hidden
>>> <mailto:email@hidden>> wrote:
>>>>
>>>> I sometimes use the default NSObject bind: to set up a simple one way
>>>> operation as you describe as opposed to a discrete observation.
>>>
>>> With macOS 10.13, the new block/closure-based KVO “addObserver” method is
>>> probably an easier way, although you do have to remove it manually.
>>>
>> The block/closure improvements are long overdue IMHO.
>>
>> I use a home brewed approach using BPBlockValueTransformer :
>> NSValueTransformer with bindings that gives a lot more flexibility.
>> A trivial example involving a closure would be:
>>
>>    BPBlockValueTransformer *blockValueTransformer = [BPBlockValueTransformer
>> valueTransformerWithBlock:^id(NSNumber *value) {
>>       strongify(self);
>>       return ([value boolValue] || self.isFree)? @“Freedom for all" :
>> @“Freedom for no-one";
>>    }];
>>    [self.titleTextField bind:NSValueBinding toObject:self.repObjCon
>> withKeyPath:@"selection.isHidden" options:@{NSValueTransformerBindingOption
>> : blockValueTransformer}];
>>
>> The downside is that you cannot establish the binding in the NIB.
>
> It’s definitely overdue; I’ve been using a blocks-based wrapper around KVO
> for years.
Is that a publicly available wrapper?

>
> A couple of notes, though, re-reading the message this replied to. The new
> blocks-based API, ‘observe()’, is actually part of the Swift overlay, which
> means it works on older macOS versions, not just 10.13. Also, you don’t have
> to remove it manually, and that’s in fact one of its major features—it
> automatically deregisters itself whenever the observer falls out of scope. So
> as long as you make sure you don’t set up a retain cycle with captured
> values, you can just stash the observer in an ivar, and when your object gets
> deallocated, your observer will be unregistered. Much easier than what we had
> to do before.
It would be good if I could get this to work all the way back to 10.9 (that’s
my deployment target).

Accurately managing observation and object lifetimes is such a big time sink
that any improvement is always welcome.

J
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Release mode bindings crash and release pools
      • From: Charles Srstka <email@hidden>
References: 
 >Release mode bindings crash and release pools (From: Jonathan Mitchell <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Quincey Morris <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Jonathan Mitchell <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Quincey Morris <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Jerome Krinock <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Quincey Morris <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Jerome Krinock <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Charles Srstka <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Quincey Morris <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Jonathan Mitchell <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Quincey Morris <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Jonathan Mitchell <email@hidden>)
 >Re: Release mode bindings crash and release pools (From: Charles Srstka <email@hidden>)

  • Prev by Date: Re: Release mode bindings crash and release pools
  • Next by Date: Re: Release mode bindings crash and release pools
  • Previous by thread: Re: Release mode bindings crash and release pools
  • Next by thread: Re: Release mode bindings crash and release pools
  • Index(es):
    • Date
    • Thread