1

私はこれが小さな抜粋であるいくつかのコードを持っています:

surfaceDimension = self.window.frame.size.height;
sliderDistancePerPoint = 1.0f / surfaceDimension / FINGER_RATIO;
addThisToSlider = sliderDistancePerPoint * diff * 1.6f;

サブクラスでは、このメソッドを上書きし、同じコードをローテーションして繰り返します。

surfaceDimension = self.window.frame.size.width;
sliderDistancePerPoint = 1.0f / surfaceDimension / FINGER_RATIO;
addThisToSlider = sliderDistancePerPoint * diff * 1.6f;

このコードを仮想化して、どちらの向きでも動作できるようにする (さまざまな) 方法は何ですか? もちろんsurfaceDimension、メソッドにすることもできますが、すべての依存関係に対してこれを繰り返す必要があります。他のアイデア?

4

1 に答える 1

0

標準的な OO プラクティスを使用し、メソッドを十分に一般化することで、これを非常に簡単に実行できます。継承のかなりまともな使用です

// override in subclass
- (BOOL) useXOrientation {
    return NO;
}

- (CGPoint) setOriginFrom:(CGPoint)sourcePoint to:(CGPoint)targetPoint {
    if (self.useXOrientation)
        targetPoint.x = sourcePoint.x;
    else
        targetPoint.y = sourcePoint.y;
    return targetPoint;
}



- (float) sizeOfDimension:(CGSize)size {
    if (self.useXOrientation)
        return size.width;
    else
        return size.height;
}

// example method
- (void) resetFirstTouch:(CGPoint)point {
    self.firstTouch = [self setOriginFrom:point to:self.firstTouch];
    self.firstTouchInParent = [self setOriginFrom:[self convertPoint:self.firstTouch toView:self.superview] to:self.firstTouchInParent];
}
于 2013-05-08T23:17:05.420 に答える