Look at these two lines: > __block NSString* noFillMeIn; ... > *noFillMeIn = @"wow";
Unless the original code is correct, you've got mismatched pointers, and you should try turning on more warnings and reading what they say, as well as trying the analyzer. -- Gary L. Wade (Sent from my iPhone) http://www.garywade.com/ > On Sep 20, 2016, at 2:06 PM, Steve Mills <sjmi...@mac.com> wrote: > > I'm turning on ARC for a project (yay) and have run into a problem I can't > wrap my head around. It always worked fine before ARC. When I turn zombies > on, doing "memory history 0x610004279ac0" can't find it in the history. > Here's the method and the call to it: > > -(void) doStuff:(NSString**)fillMeIn > { > [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL* stop) { > if(obj.flag) { > *stop = YES; > *fillMeIn = @"wow"; > } > }]; > } > > NSString* getFilledIn; > > [thing doStuff:&getFilledIn]; > > The call to doStuff: results in EXC_BAD_ACCESS, or "*** -[CFString retain]: > message sent to deallocated instance 0x610004279ac0" if I turn zombies on. > > I tried changing the param type to (NSString** _Nonnull), thinking it was > confused about my knowing that the reference will never be nil, but it didn't > help. Then I got to thinking about the reference being assigned inside the > block and changed it to: > > -(void) doStuff:(NSString** _Nonnull)fillMeIn > { > __block NSString* noFillMeIn; > > [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL* stop) { > if(obj.flag) { > *stop = YES; > *noFillMeIn = @"wow"; > } > }]; > > *fillMeIn = noFillMeIn; > } > > That seems to fix it. Is there a better way to deref and assign to the param > from within the block? > > Sent from iCloud's ridiculous UI, so, sorry about the formatting _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com