At first glance on following piece of code,it was sheer frustration on noticing underscore prefixed with the property name.
someClass.h
someClass.h
@interface someClass : NSObject
@property (strong) UIImage* thumbImage;
someClass.m
@implementation someClass
@synthesize thumbImage=_thumbImage;
Reason to prefix underscore is it clearly distinguishes between local variable and instance variable(iVar).And also to avoid compiler warnings( Local declaration of 'thumbImage' hides instance variable) we need to prefix underscore with the property names.
Apple recommends that instance variable can have same name as property names,property names can start with lower case letter,local variables also can start with lower case letter.There comes the problem when you see a piece of code where we can't say whether the variable is an iVar or local variable by this naming convention.To fix all these issues,prefix underscore with the property names.