如何与其他类共享方法

时间:2013-06-09 10:37:10

标签: objective-c oop

我尝试使用协议,但它需要为每个具有相同内容的2个类实现“makeMeDraggable”方法。我希望不要在每两个类中实现并继承Shared Class的实现。我该如何实现?

代码:

//--(.h)--//

@interface SharedClass : UIView;
-(void) makeMeDraggable
@end

@interface DraggableUITextView: UITextView
@end

@interface DraggableUIImageView : UIImageView
@end

@implementaion SharedClass
-(void) makeMeDraggable {
  //some code
}
@end

@implementation DraggableUITextView
@end

@implementation DraggableUIImageView 
@end

//--(.m)--//

TextView *textView = [DraggableUITextView initWithFrame:CGRectMake(0,0,50,50)];
[textView makeMeDraggable];

ImageView *imageView = [DraggableUIImageView imageNamed:@"foo.png"];
[imageView makeMeDraggable];

我想在下面避免

@interface DraggableTextView: UITextView;
-(void) makeMeDraggable
@end

@interface DraggableUIImageView : UIImageView
-(void) makeMeDraggable
@end

@implementation DraggableUITextView
-(void) makeMeDraggable {
  //same code...
}
@end

@implementation DraggableUIImageView 
-(void) makeMeDraggable {
  //same code...
}
@end

3 个答案:

答案 0 :(得分:4)

制作UIView类别并在那里编写函数而不是SharedView。赞:

@interface UIView (UIViewCategory)
-(void) makeMeDraggable;
@end


@implementaion UIView (UIViewCategory)
-(void) makeMeDraggable {
  //some code
}
@end

现在,您可以对从makeMeDraggable类继承的每个对象使用UIView方法。

答案 1 :(得分:1)

使用方法makeMeDraggable在UIView上创建一个类别,您就可以在UITextView和UIImageView对象上使用它。

答案 2 :(得分:1)

执行此操作的方法是在公共超类Category上使用{{3}},在您的情况下为UIView

类别使用新方法扩展其类,然后可以像普通方法一样将其用于所有子类。