2015-07-11 11 views
7

I mają następujące szybkiego klasę T. NumericTypeJak użyciu szybkiego klasę typu rodzajowe w celu C

@objc class MathStatistics<T: NumericType> : NSObject { 
     var numbers = [T]() 

     func sum() -> T? { 
      if numbers.count == 0 { 
       return nil 
      } 

      var sum = T(0) 

      for value in numbers { 
       sum = sum + value 
      } 
      return sum 
     } 
    } 

Swift zainicjować obiektu klasy, jak następuje:

let statistics = MathStatistics<Double>() 

Jak zainicjować ten sam obiekt w Objective C? Poniższy wiersz nie ustawia numeryczną typu T.

MathStatistics *stats = [[MathStatistics alloc] init]; 

Odpowiedz

8

Nie możesz. Wymienione w documentation:

Będziesz miał dostęp do wszystkiego w klasie lub protokołu, który jest oznaczony atrybutem @objc tak długo, jak jest to zgodne z Objective-C. Wyklucza Swift-tylko oferuje takich jak te wymienione tutaj:

  • Generics
  • krotki
  • Wyliczenia określonych w Swift
  • Struktury określone w Swift
  • funkcje najwyższego poziomu określono w Swift
  • Zmienne globalne zdefiniowane w Swift
  • Typalia zdefiniowane w Swift
  • Swift stylu variadics
  • zagnieżdżone typy
  • Curried funkcje

Trzeba pozbyć generycznych w swojej klasie. Następnie możesz go użyć w Objective-C

+1

Dzięki. Powinienem częściej czytać dokumentację jabłka;) – Morpheus78

Powiązane problemy