2016-07-26 3 views
1

У меня есть методКак добавить еще один параметр к существующему методу следующему SOLID принципа в Objective C

-(NSData*)getCommonDataWithCommandID:(int)commandID withChannelNumber:(int)channelNo withDataArray:(NSArray*)dataArray withByteArraySize:(int)byteArraySize 
{ 

} 

Это называется из многих мест и имеет большую иерархию вызова. Как я могу передать значение от dimSliderDecreasedTapped: или tapOnFifthChannel: Это всего лишь часть!

enter image description here

Теперь мне нужно добавить еще один параметр в этот метод

BOOL isFeedbackExpected

Но это фиолетово Open Closed Principle.

Каков наилучший способ для этого?

+0

Я не уверен, что я понимаю ваш вопрос; Я думаю, вы знаете, что * как * добавить еще один параметр, так вы спрашиваете, как это сделать, не нарушая слишком много кода? – Droppy

+0

Если я правильно понял ваш вопрос, вы хотите добавить один новый параметр к методу, который вы реализовали в своем проекте, и вы вызвали этот метод из многих классов. Таким образом, нет волшебного способа сделать это. Вы должны изменить метод, как вы хотите, в декларации и определении, а затем вы можете искать метод в проекте и вносить изменения в каждый класс. –

ответ

2

Добавить другой метод с этим параметром:

- (NSData*)getCommonDataWithCommandID:(int)commandID 
        withChannelNumber:(int)channelNo 
         withDataArray:(NSArray*)dataArray 
        withByteArraySize:(int)byteArraySize 
        feedbackExpected:(BOOL)feedbackExpected { 
     ... 
} 

и вызвать этот метод из исходного метода

- (NSData*)getCommonDataWithCommandID:(int)commandID 
        withChannelNumber:(int)channelNo 
         withDataArray:(NSArray*)dataArray 
        withByteArraySize:(int)byteArraySize { 
    return [self getCommonDataWithCommandID:commandID 
          withChannelNumber:channelNo 
           withDataArray:dataArray 
          withByteArraySize:byteArraySize 
          feedbackExpected:NO]; 
} 

Это расширит функциональные возможности, но он будет держать старый интерфейс. В Swift это будет еще проще, потому что вы можете добавить необязательный параметр (параметр со значением по умолчанию).

+0

Как передать feedbackExpected значение - (NSData *) getCommonDataWithCommandID: (интермедиат) commandID withChannelNumber: (INT) channelNo withDataArray: withByteArraySize (NSArray *) DataArray: иерархия (интермедиат) byteArraySize есть 4 до 5 уровня , Как я могу передать feedbackExpected значение из этих методов? –

+0

@ShuvoJoseph Я не понимаю ваш вопрос. – Sulthan

+0

Я добавил изображение к вопросу. –

0

Существует два способа: сначала добавить параметр в существующий метод, и вы должны изменить каждый, где этот метод используется (называется). Во-вторых, сделайте другой метод с этим дополнительным параметром и вызовите этот новый метод, когда вам нужно, чтобы вам не нужно было менять другие вещи в проекте

+0

как оригинальный один не использовался во втором случае? Я не знаю, с вашей проблемой! – Lion

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