Hi Dave,

        For myClassA, you will always have to cast the return value to myClassB 
if you know that’s what will be returned. For a great blog post on the subject, 
I give you Mike Ash:

https://mikeash.com/pyblog/friday-qa-2015-11-20-covariance-and-contravariance.html


Jeff Kelley

slauncha...@gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> | 
jeffkelley.org <http://jeffkelley.org/>
> On Jan 4, 2016, at 11:24 AM, Dave <d...@looktowindward.com> wrote:
> 
> Hi,
> 
> In Objective-C, is it possible to override a property and have it return a 
> different type to the base class?
> 
> I have a base class with the following property defined:
> 
> @property (nonatomic,retain)                  ClassA*                 propA;
> 
> and the following getter:
> 
> 
> -(ClassA*) propA
> {
> return someValueOfClassA;
> }
> 
> 
> I’d like to override this in my subclass, as so:
> 
> -(ClassB*) propA
> {
> ClassA*                       myClassA;
> ClassB*                       myClassB;
> 
> myClassA = super.propA;
> myClassB = [[ClassB alloc] initWithClassA:myClassA]; //ClassB is a subclass 
> of Class A
> 
> return myClassB;
> }
> 
> I can do this ok, but when I access the property:
> 
> // myClassA is already setup OK
> ClassB*                               myClassB;
> 
> myClassB = myClassA.propA;                    //Warning on this line saying 
> return type is not ClassB
> 
> and I have to coerce the value to be ClassB to get rid of the warning. Is 
> there any way to avoid this?
> 
> Thanks a lot
> Dave
_______________________________________________

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