Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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.