Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Object-Oriented Swift 2.0 Classes Helper Methods

Danny Kilkenny
Danny Kilkenny
4,507 Points

Why self.strength instead of just strength

I don't understand why Pasan uses "self.strength" instead of just using "strength". Could someone explain that to me. Here's the code below

Danny Kilkenny
Danny Kilkenny
4,507 Points
class Tower {
    let position: Point
    var range: Int = 1
    var strength: Int = 1

    init(x: Int, y: Int) {
        self.position = Point(x: x, y: y)

    }

    func fireAtEnemy(enemy: Enemy) {
        if inRange(position: self.position, range: self.range, target: enemy.position) {
            while enemy.life > 0 {
                enemy.decreaseHealth(factor: self.strength)

            }
        }
    }

    func inRange(position: Point, range: Int, target: Point) -> Bool {
        let availablePositions = position.surroundingPoints(withRange: range)
        for point in availablePositions {
            if (point.x == target.x) && (point.y == target.y) {
                return true
            }
        }
        return false
    }
}

1 Answer

Hello, Danny.

Whenever you need to access/use an object's property within that object's definition, you must use the keyword self and dot notation.

To put this into perspective, when you want to access the strength property outside the Tower object, what do you do ?

You write:

Tower.strength 

Similarly, when you need to access/use the strength property within the object, you write :

self.strength

Hope this helps. However, if it doesn't, do ask away.

Danny Kilkenny
Danny Kilkenny
4,507 Points

Nah that makes perfect sense! Thanks!