Providing context for your setting. Define enough of your cultures, religions, and society so that there is conflict. This will generate motives for PCs and NPCs alike. 

For example all the gods in my setting hates demons which are considered universally evil. One of the common traits of my "evil" gods  are extreme philosophies in dealing with Demons. For example Set believes in absolute order, a rigid hierarchy, blind obedience. Mitra likewise believes in order, hierarchy, and obedience but tempered with virtues like justice and mercy. So this aspect of my campaign setups a three way conflict. I had PCs utterly at odds with the Church of Set and yet had to ally because they discovered something demonic that was beyond their ability to handle. Then in the aftermath they are at odds again because of attitudes of the adherents of Set.

You don't have to be a Tolkien, a M.A.R. Barker (Tekemal) to do this. Just think about the consequences of some of the assumptions you and the rules make about the fantasy setting and write up it in a page or two. 

Then fit your NPCs motivations within that framework and play it out from there. On the flip side give PCs a background embedded in that framework. Make their association with the various elements of the framework beneficial. This give a bigger chance that they will care about the Villain NPC's motives and truly despise him for it.

How do I create a great fantasy villain that inspires the party to rally against them?
I have a block wherein I use self so I declare a weak reference to self:

__weak MyClass *weakSelf = self;


Now my questions:


I get an error where I define weakSelf and I don't understand what this should mean.:

weak attribute can not be specified on an automatic variable
Inside my block I pass weakSelf to another block and I am not sure if I now have to do the same thing again like so:

__weak MyClass *weakWeakSelf = weakSelf;


And then pass weakWeakSelf to that block?

