Вы не можете преобразовать его на месте, потому что экземпляр класса B больше, чем экземпляр класса A (при условии, что дополнительные свойства хранятся в ivars). Objective-C не имеет возможности перемещать объекты.
Если вы счастливы сделать копию объекта (т.е. уверены, что на него нет ссылок или можете обновить его), вы можете сделать что-то подобное с функциями времени выполнения Objective-C
newB = object_copy(a, class_getInstanceSize(B));
object_setClass(newB, B);
object_dispose(a);