vendredi 5 août 2016

Trying to understand the implementation of delegates with protocols in Swift

After doing loads of research I am still a little confused about how to use and implement delegates. I have tried writing my own, simplified example, to aid my understanding - however it does not working - meaning I must be a little lost.

//the underlying protocol
protocol myRules {
    func sayName(name: String);
}

//the delegate that explains the protocols job for this example
class myRulesDelegate: myRules {
    func sayName(name: String){
        print(name);
    }
}

//the delegator that wants to use the delegate
class Person{
    //the delegator referencing the delegate to use
    var delegate: myRulesDelegate!;
    var myName: String!;

    init(name: String){
        self.myName = name;
    }
    func useDels(){
        //using the delegate (this causes error)
        delegate.sayName(name: myName);
    }
}

var obj =  Person(name: "Tom");
obj.useDels();

I have read and watched so many tutorials but am still struggling. I get the error

 error: extraneous argument label 'name:' in call
        delegate.sayName(name: myName);

which demonstrates I must be misunderstanding how delegate patterns work. I would really appreciate a corrected version of the code, with a simple explanation as to why it works, and why it is helpful.

I hope this helps others too. Cheers.

Aucun commentaire:

Enregistrer un commentaire