Re: __attribute__((NSObject)) not behaving as expected
On Jan 24, 2014, at 11:12 AM, Kevin Meaney wrote: > On 24 Jan 2014, at 19:02, David Duncan wrote: > >> Compiler folks could explain this better, but the root issue is that >> __attribute__((NSObject)) doesn’t do as much as you might expect given the >> way you’ve declared it. Its better in the long run to just not rely upon it. > > When you say the way I've declared it, you mean as a readonly property or is > there just a better way to get the desired the result. I don't like the > manual solution I described because it is really declared as an assign then > goes and retains the context. So I'm not finding an answer I'm happy with and > I can't believe others are not having the same problem. Basically every reference needs to carry the attribute in order for the right thing to be done in all cases. I suspect most people aren’t having this problem because this particular attribute is not very well known or widely used. -- David Duncan ___ 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
Re: __attribute__((NSObject)) not behaving as expected
On 24 Jan 2014, at 19:10, Manfred Schwind wrote: > Does ist help, if you assign it this way instead: > > self.context = theContext; > > In your original code you're directly accessing the "backed" instance > variable instead of going over the property, so maybe your > property-declaration is ignored in this case. It's a readonly property which you can't assign to using the normal setter even in the init method. Kevin ___ 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
Re: __attribute__((NSObject)) not behaving as expected
On 24 Jan 2014, at 19:02, David Duncan wrote: > Compiler folks could explain this better, but the root issue is that > __attribute__((NSObject)) doesn’t do as much as you might expect given the > way you’ve declared it. Its better in the long run to just not rely upon it. When you say the way I've declared it, you mean as a readonly property or is there just a better way to get the desired the result. I don't like the manual solution I described because it is really declared as an assign then goes and retains the context. So I'm not finding an answer I'm happy with and I can't believe others are not having the same problem. Kevin ___ 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
Re: __attribute__((NSObject)) not behaving as expected
Does ist help, if you assign it this way instead: self.context = theContext; In your original code you're directly accessing the "backed" instance variable instead of going over the property, so maybe your property-declaration is ignored in this case. Regards, Mani Am 24.01.2014 um 19:58 schrieb Kevin Meaney : > Building on and compiling for minimum system of 10.9. Xcode 5.0.1 > > Using ARC. > > I have a property declared so: > > @property (readonly, strong) __attribute__((NSObject)) CGContextRef > context > > I have a designatied initializer defined like so: > > -(instancetype)initWithCGContext:(CGContextRef)theContext > > The object is alloc'd and the init method is called immediately after the > context is created. Immediately after the init method returns the context is > released. > > If in the implementation of the init method I have: > > self->_context = theContext > > Then the first time I try and access the context I get a memory access > exception. If I replace that with: > > self->_context = CGContextRetain(theContext); > > Then I get a memory leak of the context when my object is destroyed. > > If however I just declare my property like so: > > @property (readonly) CGContextRef context; > > And in the initializer I use: > > self->_context = CGContextRetain(theContext); > > And add a dealloc: > > -(void)dealloc > { > CGContextRelease(self->_context); > } > > Then everything works as desired. > > I'd like to know what I'm doing wrong. > > Kevin > > > ___ > > 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/lists%40mani.de > > This email sent to li...@mani.de ___ 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
Re: __attribute__((NSObject)) not behaving as expected
Compiler folks could explain this better, but the root issue is that __attribute__((NSObject)) doesn’t do as much as you might expect given the way you’ve declared it. Its better in the long run to just not rely upon it. On Jan 24, 2014, at 10:58 AM, Kevin Meaney wrote: > Building on and compiling for minimum system of 10.9. Xcode 5.0.1 > > Using ARC. > > I have a property declared so: > > @property (readonly, strong) __attribute__((NSObject)) CGContextRef > context > > I have a designatied initializer defined like so: > > -(instancetype)initWithCGContext:(CGContextRef)theContext > > The object is alloc'd and the init method is called immediately after the > context is created. Immediately after the init method returns the context is > released. > > If in the implementation of the init method I have: > > self->_context = theContext > > Then the first time I try and access the context I get a memory access > exception. If I replace that with: > > self->_context = CGContextRetain(theContext); > > Then I get a memory leak of the context when my object is destroyed. > > If however I just declare my property like so: > > @property (readonly) CGContextRef context; > > And in the initializer I use: > > self->_context = CGContextRetain(theContext); > > And add a dealloc: > > -(void)dealloc > { > CGContextRelease(self->_context); > } > > Then everything works as desired. > > I'd like to know what I'm doing wrong. > > Kevin > > > ___ > > 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/david.duncan%40apple.com > > This email sent to david.dun...@apple.com -- David Duncan ___ 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
__attribute__((NSObject)) not behaving as expected
Building on and compiling for minimum system of 10.9. Xcode 5.0.1 Using ARC. I have a property declared so: @property (readonly, strong) __attribute__((NSObject)) CGContextRef context I have a designatied initializer defined like so: -(instancetype)initWithCGContext:(CGContextRef)theContext The object is alloc'd and the init method is called immediately after the context is created. Immediately after the init method returns the context is released. If in the implementation of the init method I have: self->_context = theContext Then the first time I try and access the context I get a memory access exception. If I replace that with: self->_context = CGContextRetain(theContext); Then I get a memory leak of the context when my object is destroyed. If however I just declare my property like so: @property (readonly) CGContextRef context; And in the initializer I use: self->_context = CGContextRetain(theContext); And add a dealloc: -(void)dealloc { CGContextRelease(self->_context); } Then everything works as desired. I'd like to know what I'm doing wrong. Kevin ___ 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