我创建了以下类别方法:
@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:' 这样做的正确方法是什么?
答案 0 :(得分:0)
您不能在Objective-C中重载参数类型的方法。你需要给它一个不同的名字:
- (UIImage *)captureSnapshot:(float)scale;
- (UIImage *)captureSnapshotOfType:(enum ScaleType)scaleType;
这是因为在Objective-C中实现方法的方式:每个方法对应一个选择器,而选择器名称不依赖于方法的参数类型。