Each property is backed by an instance variable. The language allows for them to be named differently. By doing @synthesize detailDescriptionLabel = _detailDescriptionLabel;, you're basically saying that use _detailDescriptionLabel as the backing instance variable for the property detailDescriptionLabel. If you just do @synthesize detailDescriptionLabel;, it implicitly understands that the instance variable has the same name.