2013-05-12 6 views
1

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

Мне нужно передать это методу. Что-то вроде

[self doSomething:result]; 

Как объявить этот метод?

- (void) doSomething:(SLComposeViewControllerResult) result ? 

- (void) doSomething:(TWTweetComposeViewControllerResult) result ? 

- (void) doSomething:(NSNumber *) result ? 

ответ

4

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

- (void)doSomethingSL:(SLComposeViewControllerResult) result 
{ 
    // made up, idk what the result enum would be be 
    [self doSomething:(result == SLComposeSuccess)]; 
} 

- (void)doSomethingTweet:(TWTweetComposeViewControllerResult) result 
{ 
    // made up, idk what the result enum would be be 
    [self doSomething:(result == TWTweetSuccess)]; 
} 

- (void)doSomething:(BOOL)success 
{ 
} 

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

1

И SLComposeViewControllerResult, и TWTweetComposeViewControllerResult - оба перечисления, с 0 значением отменено и 1 значение сделано.

Таким образом, любой из них должно быть в порядке:

- (void) doSomething:(SLComposeViewControllerResult) result; 
- (void) doSomething:(TWTweetComposeViewControllerResult) result; 
- (void) doSomething:(NSInteger) result; 

[править] Обратите внимание, этот комментарий в TWTweetComposeViewController.h:

// This class has been deprecated in iOS 6. Please use SLComposeViewController (in the Social framework) instead. 

Таким образом, вы должны просто использовать версию SLComposeViewControllerResult.

+0

Не без предупреждения, особенно если речь идет о протоколах. –

+0

Нет, он не дает никаких предупреждений ни для одного из них. –

+0

Спасибо. Я подозревал, что цифры могут быть одинаковыми, но как вы узнали, что они были NSIntegers? В любом случае, я должен поддерживать iOS 5 в этом приложении, поэтому я использую TWTweetComposeViewController. – SpaceDog

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