2017-01-24 17 views
9

objc_getClassList gibi bir şey, ancak yapılar için.Swift-3 çalışma zamanında tüm yapı türlerini almanın yolu nedir?

Sadece bir bağlam vermek için: Bu yöntem (sınıflar için), belirli son eki olan tüm sınıfların bunlara yönelik testlere sahip olduğunu test etmek için birim testlerimizde kullanılır. Testleri test ediyoruz!

+1

Bildiğim kadarıyla, yapıları çalışma zamanında gerçekten mevcut değil. Derleyiciye, birlikte gruplanmış ilgili verileri nasıl işleyeceğini anlatmanın bir yolu. Çoğu durumda (yani, protokol polimorfizmi kullanılmadığında), yöntemler tamamen belirtilmiştir ve mevcut – Alexander

+0

@Alexander yapısına ait herhangi bir çalışma zamanı bilgisine ve tüm yapıların tek bir protokolle uyumlu olmasına gerek yoktur. Ayna (yansıtan: Protocol.self) .children 'işlevini zamanın bir noktasında kullanabileceğinize dair ipuçları vardır, ancak geçerli Swift sürümünde dizi boştur. http://stackoverflow.com/questions/35125708/how-to-list-swift-types-that-conform-to-protocol-using-reflection –

+0

Protokoller de derlenemezler. Derleyici bir protokolün tüm yöntemlerini statik olarak göndermek için yeterli bilgiye sahipse, çalışma zamanında var olmasının bir nedeni yoktur. – Alexander

cevap

1

Swift derleyicisi çoğunlukla bu tür yansıma yapmak için yeterli meta verileri yayar ancak ortaya çıkarmaz. Tam sadakat yansıması “yapmak istediğimiz şeylerin listesi” üzerindedir, ancak henüz uygulanmamıştır.

İlgili konular