Каждая переменная класса имеет выделенных для нее память, а computed properties не имеют. В геттере и сеттере вы просто определяете какое то выражение, которое выполняется в при соответствующей операции. Хороший пример со временем:
class Time {
var seconds:Double = 0
init(seconds: Double) {
self.seconds = seconds
}
var minutes: Double {
get {
return (seconds / 60)
}
set {
self.seconds = (newValue * 60)
}
}
var hours: Double {
get {
return (seconds / (60 * 60))
}
set {
self.seconds = (newValue * (60 * 60))
}
}
var days: Double {
get {
return (seconds / (60 * 60 * 24))
}
set {
self.seconds = (newValue * (60 * 60 * 24))
}
}
}
Просто абстракция, можно использовать конечно и функцию вместо этого, но так в некоторых случаях более "элегантно" что ли..
Хороший промер есть ещё в iBook Swift книге с прямоугольником.