1

我的结果来自 TWTweetComposeViewControllerResult 或 SLComposeViewControllerResult 类型的方法。

我需要将它传递给一个方法。就像是

[self doSomething:result];

如何声明此方法?

- (void) doSomething:(SLComposeViewControllerResult) result ?

- (void) doSomething:(TWTweetComposeViewControllerResult) result ?

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

2 回答 2

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
{
}

如果您仍然确信要以统一的方式处理它们并忽略类型,则始终可以将结果转换为方法中的 int 并转发它们。

于 2013-05-12T15:33:15.250 回答
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 版本。

于 2013-05-12T16:24:47.027 回答