我的结果来自TWTweetComposeViewControllerResult或SLComposeViewControllerResult类型的方法。
我需要将此传递给方法。像
这样的东西[self doSomething:result];
如何声明此方法?
- (void) doSomething:(SLComposeViewControllerResult) result ?
- (void) doSomething:(TWTweetComposeViewControllerResult) result ?
- (void) doSomething:(NSNumber *) result ?
答案 0 :(得分: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并转发它们。
答案 1 :(得分:1)
SLComposeViewControllerResult和TWTweetComposeViewControllerResult都是枚举,0意味着取消,1意思完成。
所以这些都应该没问题:
- (void) doSomething:(SLComposeViewControllerResult) result;
- (void) doSomething:(TWTweetComposeViewControllerResult) result;
- (void) doSomething:(NSInteger) result;
[edit]请注意TWTweetComposeViewController.h中的这条评论:
// This class has been deprecated in iOS 6. Please use SLComposeViewController (in the Social framework) instead.
所以你应该只使用SLComposeViewControllerResult版本。