Objecrtive C,重载枚举和浮点数

时间:2014-09-21 07:26:46

标签: objective-c enums overloading

我创建了以下类别方法:

@implementation UIView (Snapshot)

enum ScaleType {FullScreen, RealSize};

- (UIImage *)captureSnapshot:(float)scale
{
   ...
}

- (UIImage *)captureSnapshot:(enum ScaleType)scaleType
{
    switch (scaleType) {
        case FullScreen:
            return [self captureSnapshot: 0.0f];
            break;

        case RealSize:
            return [self captureSnapshot: 1.0f];
            break;

        default:
            ...
    }
}

@end

此代码无法编译并显示错误:"方法重复声明' captureSnapshot:' 这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您不能在Objective-C中重载参数类型的方法。你需要给它一个不同的名字:

- (UIImage *)captureSnapshot:(float)scale;
- (UIImage *)captureSnapshotOfType:(enum ScaleType)scaleType;

这是因为在Objective-C中实现方法的方式:每个方法对应一个选择器,而选择器名称不依赖于方法的参数类型。