代码之家  ›  专栏  ›  技术社区  ›  Mark A. Donohoe

在共享objective-c方法中获取类类型?

  •  0
  • Mark A. Donohoe  · 技术社区  · 15 年前

    它不能简单地委托给基类,因为这只会实例化NSObject的实例,而不是派生类FooClass,但它仍然可以工作!那么,有人会怎么写类似的东西呢?

    换句话说,基类不应该是这个。。。

      + (id) somethingLikeNew{
            return [[NSObject alloc] init];  
        }
    

    而是这个。。。

      + (id) somethingLikeNew{
            return [[<SomethingThatMapsToFooClassType> alloc] init];  
        }
    

    …其中'somethingthatmapstofooklasstype'是从NSObject继承的派生类的类型,它需要获取共享方法'somethingtlikew'。

    基本上,我在NSObject上添加了一个category,我有需要知道类型的共享方法,但是实现都是泛型的,因此在NSObject上是一个category,而不是在我的类文件中到处都是(就像你没有到处都是'new'一样)。就在那儿。)

    有人吗?布勒?布勒?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Barry Wark    15 年前

    在任何Objective-C方法中 self (隐式)参数是指接收器。对于类方法, 自己 Class

    + (id)somethingLikeNew
    {
       return [[self alloc] init];
    }
    
        2
  •  0
  •   Mark A. Donohoe    15 年前

    哈!我自己在贴了两秒钟后发现的!您可以在共享方法中使用“self”来表示派生类的类类型,因此上面的内容只是。。。

      + (id) somethingLikeNew{
            return [[self alloc] init];  
        }
    

    M