This is a new compiler warning that only showed up when I updated XCode to 4.6. My code is lifted directly from Apple\'s documentation (this is my iOS 6 code btw).
The compiler is just helping you out with code that was already a problem, it just didn't know about it before.
You can read about retain cycles here: http://www.cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html
Basically you just need to change your code to something like:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
__weak MyViewController *blockSelf = self;
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
[blockSelf setLastError:error];
if(localPlayer.authenticated){