iPhone - общие методы в отдельном файле - PullRequest
3 голосов
/ 26 февраля 2010

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

Как мне это сделать в Xcode?

Извините, но я новичок в разработке для iPhone.

спасибо

Ответы [ 4 ]

2 голосов
/ 26 февраля 2010

У меня иногда есть класс Utility, для которого я определяю только методы класса. Везде, где мне нужно использовать один из этих случайных методов, я просто #import "Utility.h" и [Utility doSomeHandyThing]

Вы определяете метод с помощью этого объявления:

+(BOOL)doSomeHandyThing;

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

1 голос
/ 26 февраля 2010

Есть несколько способов достижения этого. Это немного зависит от того, что это за классы, которым может понадобиться метод, о котором вы говорите. Другими словами, это зависит от уровня интеграции, который вам нужен. Например; должен ли этот метод работать с данными, инкапсулированными в этих классах.

Одним из подходов было бы использование одноэлементного вспомогательного класса, реализующего конкретный метод.

Другим подходом является класс-помощник со статическим методом (то, что Скуджи очень кратко пишет в своем ответе).

Другим подходом было бы создание базового класса, который содержит определенный метод, а все другие классы, которым этот метод нужен, просто расширяют базовый класс. Позвольте мне составить это для вас:

BaseClass.h:
@interface BaseClass
{
};
- someNiftyMethodWith:(NSString *)someCoolParameter;
@end

BaseClass.m:
@implementation BaseClass
- someNiftyMethodWith:(id)someCoolParameter
{
    NSLog(@"yoy, that was easy to print %@ into the console", someCoolParamater);
}
@end

ExtendingClass.h
@interface ExtendingClass : BaseClass
{
};
- someMethodThatNeedsHelp;
@end

ExtendingClass.m
@implementation ExtendingClass
- someMethodThatNeedsHelp
{
    [self someNiftyMethodWith:@"called by the extending class"];
}
@end

И есть еще больше способов достичь того, что вам может понадобиться при использовании Задачи C. Обращайте внимание на Категории, Делегаты, Протоколы.

И последнее, но не менее важное - очень старомодное решение простой C-функции, зарегистрированной в заголовочном файле, например:

Helper.h:
void OldSchoolHelperFunction(void) { printf("simple helper function"); };

Для этого вы должны включить заголовок Helper.h во все реализации классов, которые могут в нем нуждаться

#import "Helper.h"

@implemenation FooBar
- someMethodThatNeedsHelp
{
    OldSchoolHelperFunction();
}

@end
0 голосов
/ 26 февраля 2010

Какая часть кода должна быть общей между классами? Возможно, в этом случае подойдет сначала создание базового класса, а затем его наследование для других.

0 голосов
/ 26 февраля 2010

Просто создайте собственный класс, который имеет эти методы. Это должно вам помочь.

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