2010-02-26 2 views
3

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

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

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

благодаря

ответ

2

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

Вы бы определить метод с этой декларацией:

+(BOOL)doSomeHandyThing; 

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

+0

спасибо !!!!!!!!!!!!!!!!!! – SpaceDog

0

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

1

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

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

Другой подход - это вспомогательный класс со статическим методом (то, что Squeegy очень кратко разрабатывает в своем ответе).

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

 
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 

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

Последнее, но не менее есть очень старая школа решение простой C-функции включены в заголовочном-файл, как это:

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

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

 
#import "Helper.h" 

@implemenation FooBar 
- someMethodThatNeedsHelp 
{ 
    OldSchoolHelperFunction(); 
} 

@end 
0

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

Смежные вопросы