He is referring to accessing your @properties via the self notation. When synthesizing a property, the getters and setters for that variable are automatically created for you:
@property (nonatomic,strong) MyClass myVar;
@synthesize myVar = _myVar;
- (MyVar *)myVar
{
return _myVar;
}
- (void)setMyVar:(MyClass *)myVar
{
_myVar = myVar;
}
These methods are created for behind the scenes when a property is defined and/or synthesized (depending on Xcode version)
so when you do
self.myVar = 5;
You are actually doing [self setMyVar:5];
However, it is possible to directly access the variables and bypass the setter by using the following notation
_myVar = 5;
Example:
@property (nonatomic,strong) MyClass myVar;
@synthesize myVar = _myVar;
- (void)someMethod
{
// All do the same thing
self.myVar = 5;
[self setMyVar:5];
_myVar = 5;
}
The author of the article is recommending that you do not use getters and setters within the dealloc and init methods, but directly access the variable using the _myVar
notation.
See this answer for further information regarding best practices, etc, but it is a debatable issue: Why shouldn't I use Objective C 2.0 accessors in init/dealloc?