Как сохранить мой код организованным, когда моему приложению нужен вспомогательный класс? - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть несколько пользовательских UIViewControllers в моем приложении, которые должны знать строку, возвращаемую NSDate.Я мог бы скопировать и вставить один и тот же код между этими классами, но это явно ужасная практика.Также, вероятно, нехорошо помещать его в 1 класс как метод, а затем добавить другой класс, чтобы воспользоваться его методом.Это кажется грязной вещью.Итак, что бы вы порекомендовали мне сделать?

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

Ответы [ 4 ]

2 голосов
/ 20 февраля 2012

Звучит так, будто вам нужна либо функция , а не метод:

//Helpers.h

#import <Foundation/Foundation.h>

NSString * makeAStringFromThisDateSomehow(NSDate * d);

//Helpers.m

#import "Helpers.h"

NSString * makeAStringFromThisDateSomehow(NSDate * d)
{
    // Body
    // of
    // your
    // function
}

Или для создания категории на NSDate, чтобы делать то, что вынужно:

//NSDate+AndrewsCategory.h

#import <Foundation/Foundation.h>

@interface NSDate(AndrewsCategory)
- (NSString *)Andrew_MakeAStringSomehow;
@end

//NSDate+AndrewsCategory.m
#import "NSDate+AndrewsCategory.h"

@implementation NSDate(AndrewsCategory)
- (NSString *)Andrew_MakeAStringSomehow {
    // Body
    // of
    // your
    // method
}

@end

Обратите внимание на глупый префикс в имени метода.Это важно, чтобы имена ваших методов не сталкивались с другими именами методов в классах фреймворка.Обычно вы используете инициалы: вашу компанию, свою компанию или проект.

В любом случае, просто импортируйте соответствующий заголовок, где вам нужно использовать функцию или метод, и вы должны быть фанатичными.

1 голос
/ 20 февраля 2012

Я бы подумал написать категорию на NSDate. Категории позволяют расширять функциональность существующих классов с помощью дополнительных методов без необходимости связываться с существующей реализацией класса. Таким образом, вы можете добавить yourMethod к NSDate, и в будущем просто сможете звонить [yourDate yourMethod].

Чтобы сделать это в XCode, просто нажмите ⌘N, чтобы создать новый файл, и выберите категорию Objective-C, затем дайте ему некоторое имя и сделайте его категорией в NSDate.

Затем настройте свой заголовок:

@interface NSDate (YourCategory)

- (NSString *) yourMethod;

@end

И ваша реализация:

@implementation NSDate (YourCategory)

- (NSString *) yourMethod {
    return [NSString stringWithFormat:@"yourMethod on this date: ", [self description]]; // for example
}

@end

Затем просто включите "NSDate + YourCategory.h" в любой файл, где вы хотите использовать yourMethod.

0 голосов
/ 20 февраля 2012

Я бы порекомендовал добавить метод в категорию, а затем добавить заголовок в pch-файл вашего проекта

#ifdef __OBJC__

#import "yourHeader.h"

#endif

, если вы ищете Google NSDate + Helper, который должен дать вам представление о реализации.

Ник

0 голосов
/ 20 февраля 2012

Это вероятно, хорошо поместить его в 1 класс в качестве метода, а затем попросить другой класс добавить этот класс, чтобы воспользоваться его методом.простые 1 или 2 методы Подклассы NSObject не будут иметь ни малейшего различия в выполнении

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