Re: Is it possible for a subclass to set the ivar of its base class?

2016-09-24 Thread Quincey Morris
On Sep 24, 2016, at 12:15 , Patrick J. Collins  
wrote:
> 
> There's no way to do this without duplicating tons of their code?

You can’t add a method (setOtherWut) to the base class in the subproject? That 
would be easier than mucking with the run-time. ___
Do not post admin requests to the list. They will be ignored.
Objc-language mailing list  (Objc-language@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/objc-language/archive%40mail-archive.com

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

Re: Is it possible for a subclass to set the ivar of its base class?

2016-09-24 Thread Quincey Morris
On Sep 24, 2016, at 08:11 , Patrick J. Collins  
wrote:
> 
>@implementation Lol {
>int _wut;
>}
> 
>-(void)setWut:(int)wut {
>_wut = wut;
>// side effects I do not want.
>}

How do you know this *is* the implementation in the base class? How do you know 
there *is* a private variable called “_wut”, or its type, or what value it 
actually contains, or if there are any other variables that must be set 
consistently whenever the value of the “wut” property changes?

I don’t see how you can safely make your change without seeing the source code 
of the base class, and it you have access to the source code you’d be better 
off making a custom library.

 ___
Do not post admin requests to the list. They will be ignored.
Objc-language mailing list  (Objc-language@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/objc-language/archive%40mail-archive.com

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

Is it possible for a subclass to set the ivar of its base class?

2016-09-24 Thread Patrick J. Collins
I am trying to change the behavior of a library by subclassing one of the
files, but am finding this is not working because I can't access (change) one
of the internal instance variables.

To illustrate my problem:

  Rofl *rofl = [[Rofl alloc] init];
  [rofl otherSetWut:123];
  [rofl speak];

  

@implementation Lol {
int _wut;
}

-(void)setWut:(int)wut {
_wut = wut;
// side effects I do not want.
}

-(void)speak {
NSLog(@"so wut up? %i", _wut);
}

@end

  

@implementation Rofl {
int _wut;
}

-(void)otherSetWut:(int)wut {
_wut = wut;
}

@end

  


When I run this, I get 0 instead of 123.  Is there a way I can get access to 
the _wut ivar in the base class so that I will
How can I make it so that I will get the desired 123 output?

Thanks!

Patrick J. Collins
http://collinatorstudios.com

 ___
Do not post admin requests to the list. They will be ignored.
Objc-language mailing list  (Objc-language@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/objc-language/archive%40mail-archive.com

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