Re: Trouble calling class_addIvar()
Re: Trouble calling class_addIvar()
- Subject: Re: Trouble calling class_addIvar()
- From: Rick Mann <email@hidden>
- Date: Fri, 8 Oct 2010 17:19:10 -0700
On Oct 8, 2010, at 17:12:28, Kyle Sluder wrote:
> On Fri, Oct 8, 2010 at 5:00 PM, Rick Mann <email@hidden> wrote:
>> Yes, I read that. I had hoped that I'd be able to add ivars before the class was instantiated. In this case, the class is being loaded dynamically at run time. Is there no way to get in the middle of the load and add an ivar?
>>
>> In any case, sure seems like I ought to be able to do it in +initialize.
>
> The documentation states you can't add ivars to classes that have
> already been registered. In order for a class to receive +initialize,
> it logically must already have been registered with the runtime.
> Therefore, it's quite apparent why class_addIvar() can't be called
> from +initialize.
Not really, but what is apparent (upon further reflection) is that a class specified in source code can't have its ivar layout change at runtime, or subclasses will break (I thought ObjC worked around that, but it still allocates all the ivars in one block, doesn't it?).
> The fact that you want to add instance variables to a class at all is
> a terrible code smell. Like Fresh Kills Landfill bad. What are you
> trying to achieve?
I'm implementing @dynamic properties. In some cases, they need instance storage to go with them. Associated storage will work, but for plain C types, it will be more difficult. Oh well.
--
Rick
_______________________________________________
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