Re: ^Block statement considered harmful for callbacks?
Re: ^Block statement considered harmful for callbacks?
- Subject: Re: ^Block statement considered harmful for callbacks?
- From: Steven Degutis <email@hidden>
- Date: Thu, 25 Apr 2013 10:34:15 -0500
Using blocks with ARC just requires more discipline, that's all. It isn't
to be avoided, just carefully thought about at the appropriate times.
On Thu, Apr 25, 2013 at 6:07 AM, Oleg Krupnov <email@hidden>wrote:
> The compiler indeed warns, but only for ARC projects, and for non-ARC
> projects it perfectly allows blocks to create retain cycles without
> any warnings, even Xcode's Analyze doesn't help.
>
> Besides, I'm afraid the compiler is not always capable to detect all
> such dangerous situations even with ARC on.
>
> So I am afraid it ends up with lots of retain cycles in virtually
> every project that uses blocks, but programmers just don't notice
> and/or just don't care. Do you often check your projects for leaks of
> this kind? You will be surprised if you do try.
>
> My point remains: blocks are dangerous and there is no easy way to
> ensure they are safe. You can't avoid referencing "self" in blocks,
> because it is the very point of almost every callback block. So you
> have to every time to remind yourself to jump through hoops to avoid
> the retain cycles. Nah.
>
>
>
> On Thu, Apr 25, 2013 at 1:45 PM, Tom Davie <email@hidden> wrote:
> >
> > On 25 Apr 2013, at 11:40, Diederik Meijer | Ten Horses <
> email@hidden> wrote:
> >
> >> I don't agree, blocks are very powerful.
> >>
> >> I am using Xcode 4.6 and in a project that uses ARC it was throwing
> warnings when a block reference to a property caused a retain cycle. This
> is how I found it and why I mentioned it in another thread in the first
> place.
> >>
> >> I haven't tested it extensively, but it looks as if the compiler
> recognises these situations easily and then tells you about it.
> >>
> >> So I wouldn't call blocks dangerous at all…
> >
> > You're right – the compiler *is* detecting some simple cases, as I
> suggested! Note – this does not make throwing blocks around without paying
> attention to retain cycles inherently safe though, the compiler can not
> statically infer all potential cycles.
> >
> > Thanks
> >
> > Tom Davie
>
> _______________________________________________
>
> 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
>
_______________________________________________
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