在Lion / Xcode 4.3.1中debugging的ShareKit方法?

我最近使用iOS 5 SDK升级到了Lion和Xcode 4.3.1,并且共享库ShareKit被破坏 – 它使用方法调整它的电子邮件处理程序。 显然,苹果已经禁止或至less试图逐步淘汰方法。

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

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

你认为什么是解决这个问题的最好和最简单的方法?

即使在最新的XCode和iOS SDK上,我也从来没有经历过方法调整相关的错误。 我使用ShareKit 2.0 。 虽然方法swizzling是我认为应该避免的事情。

如果我记得好的话,调用的方法是viewDidDisappear。 看看它做了什么。 在iOS 5中,您可以使用完成块来实现相同的function- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion

只要改变你closuresviewController的方法- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error可能就足够了。

这只是一个想法,你可能会摆脱方法swizzle。

混合只是用于电子邮件共享。 你自己使用MFMailComposeViewController,并从ShareKit(它在SHK.m)中去掉混合代码。