Hi Clement:

Thanks for looking into this!

> On 19 Feb 2018, at 11:43, Clément Bera <bera.clem...@gmail.com> wrote:
> 
> they're both very old. My guess is that there are two for compatibility 
> purpose

Ok, good to know. Thanks.

> All use-cases of these methods I have found do not inject nils, they expect 
> the block to have a number of arguments of the block less or equal to the 
> number of parameters in the argument array. I would say they’re used as 
> #cullWithArguments: but for some reason other selector names were preferred. 
> [...]
> There a few use-cases for nil injection though. Typically when changing 
> existing frameworks in multiple repositories, it may be that during the 
> update process the change to the caller is installed before the change of the 
> callee, and if the code is actually used (code in UI for instance), injecting 
> nils might avoid system break-down. Another use-case is for compatibility 
> with frameworks using the nil injection, but I can’t find a framework doing 
> that right now.

Ok, great.

In the end, I only added #cullArguments: instead of the #valueWith* variants 
[1]. 
The naming seems to communicate more clearly the expected semantics, and it’s 
different from the previous ones. So, in case it turns out someone needs those 
with nil injecting semantics, they could be added later.

Thanks
Stefan

[1] 
https://github.com/smarr/SOMns/pull/215/files#diff-8dd7efb0aab92cd4b39e0bf845dea9a2R621

-- 
Stefan Marr
School of Computing, University of Kent
http://stefan-marr.de/research/



Reply via email to