This appears to be working from all points of view (thank you, Instruments!):

    MyMandelbrotOperation* op = 
        [[MyMandelbrotOperation alloc] initWithSize:self.bounds.size 
                                             center:center zoom:1];
    __block __weak id observer = [[NSNotificationCenter defaultCenter] 
      addObserverForName:@"MyMandelbrotOperationFinished" 
      object:op queue:[NSOperationQueue mainQueue] 
      usingBlock:^(NSNotification *note) {
        MyMandelbrotOperation* op2 = note.object;
        CGContextRef context = [op2 bitmapContext];
        if (self->bitmapContext)
            CGContextRelease(self->bitmapContext);
        self->bitmapContext = (CGContextRef) context;
        CGContextRetain(self->bitmapContext);
        [self setNeedsDisplay];
        [[NSNotificationCenter defaultCenter] removeObserver:observer 
            name:@"MyMandelbrotOperationFinished" object:op2];
    }];
    [self.queue addOperation:op];

This is delightful. I'm not leaking self, my operations are being dealloced in 
good order, I'm successfully registering and deregistering, I'm trampolining to 
the main thread without writing a trampoline method, I'm avoiding the nightmare 
of storing my observers in an instance variable, op and op2 are the same object 
- everything about it seems to be okay. My questions are:

* Is this really an okay way to talk?

* Why was I crashing until I said __block?

m.

--
matt neuburg, phd = m...@tidbits.com, http://www.apeth.net/matt/
pantes anthropoi tou eidenai oregontai phusei
Programming iOS 5! http://shop.oreilly.com/product/0636920023562.do
RubyFrontier! http://www.apeth.com/RubyFrontierDocs/default.html
TidBITS, Mac news and reviews since 1990, http://www.tidbits.com



_______________________________________________

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

Reply via email to