Copy; class method; blocks weak/strong self.

Invoking a class method, it should then eventually call [self alloc]
and not [[self class] alloc]  (being already invoked on the class). In
the init method, it is safer to copy NSString and blocks. Use weakSelf
(and eventually strongSelf) in blocks.