Прежде чем начать, я уже прочитал документацию Swift. Я все еще пытаюсь понять, что такое AnyObject. Является ли это базовым классом для всех объектов/классов в Swift, как NSObject в Objective C?
Если я создам массив типа [AnyObject] и заполню его экземплярами класса Movie, это будет означать, что AnyObject является базовым классом Класс Кино, верно?
let someObjects: [AnyObject] = [
Movie(name: "2001: A Space Odyssey", director: "Stanley Kubrick"),
Movie(name: "Moon", director: "Duncan Jones"),
Movie(name: "Alien", director: "Ridley Scott")
]
Это должно быть правдой, иначе вы не сможете выполнить downcast с помощью оператора приведения типов (as!), верно?
for object in someObjects {
let movie = object as! Movie
println("Movie: '\(movie.name)', dir. \(movie.director)")
}
В документации Swift указано:
AnyObject может представлять экземпляр любого типа класса.
Итак... представьте это в том смысле, что AnyObject является экземпляром базового класса?
Я новичок в Swift, поэтому, пожалуйста, наберитесь терпения :)
[AnyObject]
. Вы не можете расширить протоколAnyObject
, поэтому в этом отношении он не действует как базовый класс. - person vacawama   schedule 02.08.2015