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 Intermediate Swift Extensions and Protocols Protocol Extensions

Kristof Kocsis
Kristof Kocsis
15,455 Points

Method isn't recognised on an instance of the class

I copied the code from tohe video to my xcode project:

protocol RandomNumberGenerator {
    func random() -> Int
}

extension RandomNumberGenerator {
    func random() -> Int {
        return Int(arc4random())
    }
}

class Generator: RandomNumberGenerator {}

let generator = Generator.random()

however on the last line, I got an error: "Use of instance member 'random' on type 'Self'; did you mean to use a value of type 'Self' instead?"

What does this mean? Did the code depracate, or am I missing something?

1 Answer

Dhanish Gajjar
Dhanish Gajjar
20,185 Points

The correct syntax is

let generator = Generator().random()

You create in instance of Generator by

let generator = Generator()

and then you call the function with .random()

Hope it helps.

Kristof Kocsis
Kristof Kocsis
15,455 Points

Well this was a stupid question but thank you for the help.