标签: subclass

使UIView的背景成为没有子分类的梯度

有没有办法让UIView的背景成为渐变而不进行子类化?我宁愿不使用图像文件来实现这一点.只是为了为背景绘制渐变而必须将UIView子类化似乎很愚蠢.

iphone subclass uiview

27
推荐指数
2
解决办法
4万
查看次数

如何子类化UIScrollView并将委托属性设为私有

这是我想要实现的目标:

我想子类化UIScrollView以获得其他功能.这个子类应该能够对滚动作出反应,所以我必须将delegate属性设置为self来接收如下事件:

- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView { ... }
Run Code Online (Sandbox Code Playgroud)

另一方面,其他类仍然应该能够接收这些事件,就像它们使用基础UIScrollView类一样.

所以我有不同的想法如何解决这个问题,但所有这些并不完全令我满意:(

我的主要方法是......使用像这样的自己的委托属性:

@interface MySubclass : UIScrollView<UIScrollViewDelegate>
@property (nonatomic, assign) id<UIScrollViewDelegate> myOwnDelegate;
@end

@implementation MySubclass
@synthesize myOwnDelegate;

- (id) initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.delegate = self;
    }
    return self;
}

// Example event
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    // Do something custom here and after that pass the event to myDelegate
    ...
    [self.myOwnDelegate scrollViewDidEndDecelerating:(UIScrollView*)scrollView];
}
@end
Run Code Online (Sandbox Code Playgroud)

这样,当继承的scrollview结束滚动时,我的子类可以执行一些特殊操作,但仍然会通知事件的外部委托.这到目前为止工作.但是因为我想让这个子类可供其他开发人员使用,我想限制对基类委托属性的访问,因为它只应由子类使用.我认为其他开发人员最有可能直观地使用基类的委托属性,即使我在头文件中注释问题.如果有人改变委托属性,子类将不会做它应该做的事情,我现在无法阻止它.这就是我不知道如何解决它的问题.

我尝试尝试覆盖委托属性,使其只读取:

@interface MySubclass : UIScrollView<UIScrollViewDelegate>
...
@property (nonatomic, assign, …
Run Code Online (Sandbox Code Playgroud)

delegates subclass objective-c uiscrollview ios

26
推荐指数
1
解决办法
2万
查看次数

具有合成readonly属性的类的子类无法访问Objective-C中的实例变量

在超类中MyClass:

@interface MyClass : NSObject

@property (nonatomic, strong, readonly) NSString *pString;

@end

@implementation MyClass

@synthesize pString = _pString;

@end
Run Code Online (Sandbox Code Playgroud)

在子类中 MySubclass

@interface MySubclass : MyClass

@end

@implementation MySubclass

- (id)init {
    if (self = [super init]) {
        _pString = @"Some string";
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

问题是编译器不认为它_pString是成员MySubclass,但我在访问它时没有问题MyClass.

我错过了什么?

inheritance subclass objective-c ios

26
推荐指数
2
解决办法
1万
查看次数

Swift - UIButton重写setSelected

我正在Swift中创建一个UIButton子类,以便在选择时执行自定义绘图和动画

什么在Swift中等同- (void)setSelected:(BOOL)selected于ObjC?

我试过了

override var selected: Bool

所以我可以实现一个观察者,但我得到了

Cannot override with a stored property 'selected'

subclass uibutton ios swift

26
推荐指数
2
解决办法
3万
查看次数

如何将对象"克隆"到子类对象中?

我有一个类A和一个B继承类的类A,并用更多的字段扩展它.

拥有a类型的对象A,如何创建包含对象包含的所有数据b的类型的B对象a

我试过a.MemberwiseClone()但只给了我另一个类型的A对象.我不能A投入,B因为继承关系只允许相反的演员.

这样做的正确方法是什么?

c# copy subclass object

24
推荐指数
3
解决办法
9620
查看次数

在C#4.0中,是否可以从泛型类型参数派生类?

我一直在尝试这个,但我似乎无法解决这个问题.我想做这个...

public abstract class SingletonType<TSingleton, TBaseClass> : TBaseClass
    where TSingleton : TBaseClass, new()
    where TBaseClass : class
{
    static TSingleton _singleton;
    public static TSingleton Singleton
        => _singleton ?? (_singleton = new TSingleton());
}
Run Code Online (Sandbox Code Playgroud)

计划是像这样使用它,它可以在基类周围"包裹"单例模式......

public class SingletonFoo : SingletonType<SingletonFoo, Foo> {
}
Run Code Online (Sandbox Code Playgroud)

但是,我一直这样做

无法从'TBaseClass'派生,因为它是一个类型参数

嗯...我想类型为你到底是什么的派生!

那我错过了什么?

注意:这当然是一个简单的例子,因为它没有添加任何有用的东西,但是假设SingletonType有许多其他逻辑与问题无关,因此忽略了关注手头的问题.

c# generics inheritance subclass derived-class

24
推荐指数
2
解决办法
1万
查看次数

Java:在超类方法签名中返回子类

我正在研究一个问题,其中有几个实现Foo,伴随着几个FooBuilder.虽然它们Foo共享几个需要设置的常见变量,但它们也有不同的变量,需要各自FooBuilder实现某些特定功能.为了简洁起见,我想让安装FooBuilder人员使用方法链,比如:

public abstract class FooBuilder {
  ...

  public FooBuilder setA(int A) {
    this.A = A;
    return this;
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

public class FooImplBuilder extends FooBuilder{
  ...
  public FooImplBuilder setB(int B) {
    this.B = B;
    return this;
  }
  public FooImplBuilder setC(int C) {
    this.C = C;
    return this;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

等等,有几种不同的FooBuilder实现方式.这在技术上完成了我想要的一切,但是,这种方法对执行方法链接时方法调用的顺序很敏感.以下是方法未定义的编译错误:

someFoo.setA(a).setB(b)...
Run Code Online (Sandbox Code Playgroud)

要求开发人员考虑链中方法调用的顺序.为了避免这种情况,我想让setter以FooBuilder某种方式返回实际的实现子类.但是,我不知道该怎么做.什么是最好的方法?

java interface subclass superclass

24
推荐指数
3
解决办法
1万
查看次数

如何使用Laravel的Eloquent实现单表继承?

目前我有一个名为的模型类Post.

class Post extends Eloquent {

    protected $table = 'posts';
    protected $fillable = array('user_id', 'title', 'description', 'views');

    /*
     * Relationships
     */

    public function user()
    {
        return $this->belongsTo('User');
    }

    public function tags()
    {
        return $this->belongsToMany('Tag', 'post_tags');
    }

    public function reactions()
    {
        return $this->hasMany('Reaction');
    }

    public function votes()
    {
        return $this->hasMany('PostVote');
    }

    //Scopes and functions...
}
Run Code Online (Sandbox Code Playgroud)

我想把帖子分成两种不同的类型; articlesquestions.我认为最好的方法是继承,所以Article并且Question会扩展Post.最好的方法是什么,从哪里开始?

mysql inheritance subclass laravel eloquent

24
推荐指数
2
解决办法
9677
查看次数

带有可变参数的ES6类super()

在ES6中,有没有办法调用通过可变参数传递的父构造函数,la foo.apply(this, arguments)?我找到了答案,我看到的唯一实例是调用super()(无参数)或调用super(x, y)(使用特定参数).super.apply(this, arguments)似乎不起作用.

javascript subclass ecmascript-6

23
推荐指数
1
解决办法
6438
查看次数

使用JavaScript ES6/ES2015子类化时,如何覆盖继承的方法

我创建了一个扩展Array的类.我想在调用继承的push函数之前执行任意代码.

class newArray extends Array{
      //execute any logic require before pushing value onto array
      this.push(value)    
}
Run Code Online (Sandbox Code Playgroud)

inheritance overriding class subclass ecmascript-6

23
推荐指数
1
解决办法
2万
查看次数