SORU
5 HAZİRAN 2014, PERŞEMBE


Nasıl 'saf' Swift zayıf bir protokol referans (@w/o objc)yapabilir miyim

Zayıf başvurular bir protokol saf Swift app istemiyorum ki @objc olarak ilan etti, sürece Hızlı çalışmak için görünmüyor :-)

Bu kod derleme hatası veriyor ('zayıf' sınıf dışı uygulanan'') MyClassDelegate: yazın

class MyClass {
  weak var delegate: MyClassDelegate?
}

protocol MyClassDelegate {
}

@Protokolü öneki gerek objc, o zaman çalışır.

Soru: 'saf' Swift zayıf bir temsilci yapmanın yolu mu?

CEVAP
8 HAZİRAN 2014, Pazar


Güncelleme (Beta 5):5 değişti Swift Beta Güncellemelerinden / nasıl bir protokol için sınıf şartı kabul ediyor musunuz. @class_protocol kullanmak yerine şimdi class protokol tipi bildirmeniz gerekir.

Yeni bir sözdizimi ile, orijinal cevap yazdım örnek kod okur:

protocol ProtocolNameDelegate: class {
    // Protocol stuff goes here
}

class SomeClass {
    weak var delegate: ProtocolNameDelegate?
}

Fikir aynı, ama sözdizimi belki biraz daha temiz.

(Beta 5'e kadar geçerlidir) orijinal cevabı:

Temsilci desen uygulamak için doğru şekilde özniteliği class_protocol ile protokol işareti olduğuna inanıyorum

Swift Programlama Dili Kitabı:

< . p ^“class_protocol Protokol sınıf türleri tarafından sadece kabul edilebilir olduğunu belirtmek için bir protokol için bu özniteliği uygulanır. Eğer uygularsanız objc bir protokol öznitelik, class_protocol özniteliği dolaylı olarak da bu Protokolü uygulanır; class_protocol özniteliği ile protokol açıkça işaretlemek için gerek yok.”

Benim anladığım bu özniteliği kullanarak, bu Protokol sınıfları ve çeteleler veya yapılar gibi başka şeyler için garanti. Ayrıca, objc özniteliği class_protocol bir ima olduğunu görebilirsiniz, o zaman bunu kullanın çalışır neden olur.

Kod bir örnek

@class_protocol protocol ProtocolNameDelegate {
    // Protocol stuff goes here
}

class SomeClass {
    weak var delegate: ProtocolNameDelegate?
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • Skrillex

    Skrillex

    6 NİSAN 2010