@interface A(MyCategory)

-(void)someMethodWhichLegallyAccessesThePrivateVariablePriv;

@end

That's legal, I can write a category against an already-compiled class without 
having the source and without recompiling it and I can access any of the 
private variables of that class. So no the compiler cannot throw away instance 
variables when it compiles the class originally even if no method of A used 
them originally because someone might go write a category against the compiled 
object which needs it later. 

I'm sure there are other, much simpler reasons. 



On 26-May-2010, at 8:41 PM, vincent habchi wrote:

> Le 26 mai 2010 à 14:22, Graham Cox a écrit :
> 
>> I'm pretty sure you are mistaken. If this were even remotely true, object 
>> programming would be impossible.
>> 
>> @private only declares the visibility of an ivar to its subclasses, it does 
>> not give the compiler carte blanche to write over anything it fancies.
> 
> Hmmm... Let's say you have a class A with a private variable "priv" and b a 
> pointer to a subclass of A. Is:
> 
> [(A *)b priv]
> 
> legal?
> 
> Now, admitting B never accesses any of A variables, can the compiler optimize 
> space by throwing away all A private variables?
> 
> Vincent
> 
> PS: thanks for this "carte blanche" 
> :)_______________________________________________
> 
> 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:
> http://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org
> 
> This email sent to r...@rols.org

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to