• 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: __block __weak - am I doing this right?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: __block __weak - am I doing this right?


  • Subject: Re: __block __weak - am I doing this right?
  • From: Greg Parker <email@hidden>
  • Date: Sat, 18 Feb 2012 16:45:56 -0800

On Feb 18, 2012, at 9:23 AM, Fritz Anderson wrote:
> On 18 Feb 2012, at 7:41 AM, steven Hooley wrote:
>> Matt Neuburg wrote:
>>> The same issue came up again later the same day:
>>>
>>>  __block UIBackgroundTaskIdentifier bti = [[UIApplication sharedApplication]
>>>                                  beginBackgroundTaskWithExpirationHandler: ^{
>>>      [[UIApplication sharedApplication] endBackgroundTask:bti];
>>>  }];
>>>
>>> Without __block, bti is invalid, and you won't find that out easily because it's unlikely that you'll actually expire. :) m.
>>
>> Can this be right?
>
> If I understand why you're mystified, consider this, without the __block declaration.
>
> - bti starts as junk.
>
> - The block is instantiated, and captures the junk _value_ (because it's not a __block variable) of bti.
>
> - The beginBackgroundTask… method creates the background task identifier.
>
> - That identifier is then assigned to bti. bti is no longer junk, but that does the block no good, because it's already captured the junk value.

Precisely. clang now warns about this case (or will soon; I don't know which release of Xcode has this).

test.m:9:33: warning: variable 'x' is uninitialized when captured by block [-Wuninitialized]
    id x = [Foo methodWithBlock:^{ return x; }];


--
Greg Parker     email@hidden      Runtime Wrangler



_______________________________________________

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


References: 
 >Re: __block __weak - am I doing this right? (From: steven Hooley <email@hidden>)
 >Re: __block __weak - am I doing this right? (From: Fritz Anderson <email@hidden>)

  • Prev by Date: Re: __block __weak - am I doing this right?
  • Next by Date: Paging UITableView
  • Previous by thread: Re: __block __weak - am I doing this right?
  • Next by thread: Re: __block __weak - am I doing this right?
  • Index(es):
    • Date
    • Thread