CGPoint is a structure and has several different rules in objective-c than you think. You should consider reading about structs in objective-c.
, , - , null. NSValue CGPoint.
NSValue * v = [NSValue valueWithPoint:CGPointMake(1,9)];
NSVAlue * vNull = [NSValue valueWithPointer:nil];
if([v objCType] == @encode(CGPoint)) printf("v is an CGPoint");