CGPoint - это структура, которая имеет несколько других правил в target-c, чем вы думаете. Вы должны прочитать о структурах в target-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");