如何在Objective C

时间:2016-07-26 06:53:57

标签: ios objective-c solid-principles open-closed-principle

我有一个方法

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

}

这是从很多地方调用的,并且具有很大的调用层次结构。如何从dimSliderDecreasedTapped:tapOnFifthChannel:传递价值这只是一部分!

enter image description here

现在我需要为此方法添加另一个参数

  

bool isFeedbackExpected

但这会是紫色Open Closed Principle

最好的方法是什么?

2 个答案:

答案 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中,这可能更简单,因为您可以添加可选参数(具有默认值的参数)。

答案 1 :(得分:0)

有两种方法,第一种方法是在现有方法中添加参数,您必须更改使用该方法的每个位置(调用)。第二个是,使用该额外参数创建另一个方法,并在需要时调用此新方法,这样您就不需要更改项目中的其他内容