После того, как вы создали один экземпляр вашего класса Корабль, вам нужно сообщить другим представлениям, что это за экземпляр. Таким образом, вы можете сделать Ship публичной собственностью класса, который его создал.
@property (nonatomic, retain) Ship* myShip;
Предположим, что класс является делегатом приложения - тогда в другом файле вы напишите что-то вроде
[[[UIApplication sharedApplication] delegate].myShip getNumberOfMasts];
Это просто и работает для простого проекта, но он делает объект Ship доступным для любого файла в вашем проекте - он фактически становится глобальными данными, которые трудно отладить в более крупном проекте. (Если с myShip происходит что-то плохое, какой объект был ответственным? Если это может быть какой-либо объект в вашем приложении, то это более трудная проблема для отладки, чем если бы доступ был ограничен двумя классами, которым это нужно.) Итак, если вы хотите ограничить доступ к отправке, затем не делайте myShip открытым свойством - вместо этого пусть объект, создавший myShip, передает его в вызовах инициализации, когда он создает другие объекты, к которым требуется доступ. Примерно так
[[myBattleController alloc] initWithShip:myShip];
Если это действительно один и тот же объект корабля для всего приложения, найдите переполнение стека для получения совета по созданию одноэлементных объектов.