2

我最近使用 iOS 5 SDK 升级到 Lion 和 Xcode 4.3.1,共享库ShareKit已损坏 - 它使用方法 swizzling 处理其电子邮件处理程序。显然,Apple 已经禁止或至少试图逐步淘汰方法混用。

ShareKit 导入一个</usr/include/objc/objc-class.h>不再存在的文件,并定义了自己的方法 swizzling method SHKSwizzle。它使用它来改变MFMailComposeViewControllerviewDidDisappear:方法,如下所示:

SHKSwizzle([MFMailComposeViewController class], @selector(viewDidDisappear:), @selector(SHKviewDidDisappear:));

您认为解决此问题的最佳和最简单的方法是什么?

4

2 回答 2

1

即使在最新的 XCode 和 iOS SDK 上,我也从未遇到过方法调配相关的错误。我使用ShareKit 2.0。尽管在我看来,方法调配是一件应该避免的事情。

如果我没记错的话,swizzled 的方法是 viewDidDisappear。看看它做了什么。在 iOS 5 上,您可以使用- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion.

只需更改您关闭 viewController 的方式- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error就足够了。

这只是一个想法,你如何摆脱方法混搭。

于 2012-03-30T19:56:44.387 回答
0

swizzling 仅用于电子邮件共享。自己使用 MFMailComposeViewController,并从 ShareKit 中剥离 swizzling 代码(它在 SHK.m 中)。

于 2012-03-28T23:16:55.553 回答