2014-06-08 2 views
5

Я пытаюсь найти способ избежать циклов сохранения, когда некоторые ссылки в цикле хранятся в коллекциях. Моя идея состояла в том, чтобы создать оболочку struct:Использовать типичный тип типа типа класса?

struct Weak<T> { 
    unowned let value: T 

    init(_ value: T) { 
     self.value = value 
    } 
} 

Проблема здесь в том, что unowned и weak членов должны быть типа класса (main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound), но нет никакого разумного суперкласса для меня требовать, чтобы T наследоваться от.

Есть ли способ заставить T быть типа класса без наследования от другого класса?

ответ

8

попробовать:

struct Weak<T:AnyObject> 
+0

Это сработало, спасибо! Это где-нибудь в документации? –

+0

Да, прочитайте раздел о дженериках для синтаксиса общего определения. Проведите поиск в iBook на AnyObject для получения дополнительной информации об этом протоколе. –

Смежные вопросы