2013-11-29 2 views
0

Привет всем,используют методы «MutableClass» в методах «класс»

Рассмотрим следующее:

// Things.h 
@interface Things : NSObject 
@property (strong, nonatomic) NSSomething * listOfThings; 
@end 

// Things.m 
@implementation Things 
// Some methods 
@end 

// MutableThings.h 
@interface MutableThings : Things 
- (instancetype) thingsPassingTest; 
@end 

// MutableThings.m 
@implementation MutableThings 
- (instancetype)thingsPassingTest 
{ 
    // Do some stuff in order to return a subset of Things 
    return newThings; 
} 
@end 

Я хотел бы быть в состоянии назвать thingsPassingTest для Things объекта, а не MutableThings.

Есть ли способ вызвать метод подкласса?

Или, может быть, я иду в неправильном направлении?

+1

Возможно, вам следует реализовать thingsPassingTest в базовом классе – Felix

ответ

0

В вашем дизайне MutableThings наследует от Thinks, поэтому каждое публичное свойство и методы, реализованные в Things, будут доступны в объекте MutableThings. Вы можете переопределить thingsPassingTest в классе MutableThings и вернуть нуль, возможно, это то, что вы хотите. Но лучший способ - создать класс root со всеми распространенными методами для классов Things и MutableThings. И реализуйте thingsPassingTest только в Вещи, а не в MutableThings, а не в корневом классе. Это то, о чем вы просите?

+0

Вот что я думал ... Я собирался положить в 'MutableThings' метод' addThing' (потому что он модифицирует экземпляр MutableThings). Теперь предположим, что мне нужно вызвать 'addThing', чтобы создать mutableThing, нужно ли его помещать в класс' Things'? – BPCorp

+0

Поместите это в Вещи, только если вы хотите сделать это в классе Things. Если вам это нужно, просто в MutableThings не добавляйте его в Things. – Greg

0

Вы не можете вызвать «thingsPassingTest» в объекте «Вещи», потому что «Вещи» - это суперкласс для «MutableThings». Это противоречит правилам объектно ориентированной программирующей парадигмой.

 Смежные вопросы

  • Нет связанных вопросов^_^