Как вызвать метод одного класса объекта в другой класс объекта - PullRequest
1 голос
/ 22 марта 2011

У меня есть класс с методами, которые я хочу использовать в другом классе, и я не хочу создавать эти методы снова. Я знаю, что это глупый вопрос, но я никогда не делал этого.

Спасибо,

Ответы [ 6 ]

3 голосов
/ 22 марта 2011

Вы можете использовать наследование для решения этой проблемы. В объявлении AnotherClass (в файле .h) вы должны заявить, что он расширяет ParentClass:

@interface AnotherClass : ParentClass {
    // ...
}

// method declarations for methods that are new in AnotherClass
// methods from ParentClass would be inherited by AnotherClass

@end
1 голос
/ 22 марта 2011

Здесь нет одного правильного ответа.Многое зависит от вашей конкретной ситуации и модели объекта.Можно использовать несколько разных подходов:

1) Создайте суперкласс, который реализует методы, которые вы хотите использовать повторно.Каждый из ваших текущих классов, которым нужна эта функция, может расширять этот новый супер класс.

2) Если функциональность не является неотъемлемой частью класса, вы можете создать «служебный» класс, который может вызываться каждымкласс, который нуждается в этом.

3) В некоторых ситуациях может быть целесообразно создать «категорию» для расширения функциональности класса, который вы подклассифицируете.

В общем, подумайтео вашей объектной модели и решите, где эта функциональность принадлежит.Если вы обнаружите, что много копируете, это предупреждающий знак того, что ваша модель может быть не совсем подходящей.Удачи!

1 голос
/ 22 марта 2011

Можете ли вы объяснить отношения между двумя классами?Может ли новый быть подкласс существующего класса?Два независимых класса действительно не могут совместно использовать реализации - один класс не может заимствовать методы экземпляра другого класса, если между ними нет отношения наследования.

1 голос
/ 22 марта 2011

Похоже, вы должны сделать второй класс подклассом первого класса или сделать общий суперкласс для ваших двух классов

0 голосов
/ 22 марта 2011

Вы должны быть в состоянии сделать это с ObjC Runtime , но, на мой взгляд, лучше использовать подклассы.

0 голосов
/ 22 марта 2011

Как и все остальные, у вас есть множество вариантов, но мы не можем определить лучший, пока вы не опишите ваши объекты и их структуру более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...