2

我最近使用iOS 5 SDK升級到了Lion和Xcode 4.3.1,並且共享庫ShareKit已損壞 - 它使用方法配置來處理其電子郵件處理程序。顯然蘋果有banned或至少試圖逐步淘汰方法。Lion/Xcode 4.3.1中共享的ShareKit方法?

ShareKit導入文件</usr/include/objc/objc-class.h>,該文件不再存在,並定義自己的方法調整方法SHKSwizzle。它使用這種改變MFMailComposeViewControllerviewDidDisappear:方法如下:

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

你認爲什麼是解決這個最好和最簡單的方法是什麼?

+2

而不是包含'/ usr/include/objc/objc-class.h',包含'objc/objc-class.h',你是金。 – 2012-03-30 19:58:45

+0

那也不存在... – Luke 2012-04-01 21:29:32

回答

0

只能用於電子郵件共享。自己使用MFMailComposeViewController,並從ShareKit中取出混合代碼(位於SHK.m中)。

+0

我意識到這一點。我不想手動重新包裝MFMailComposeViewController - 我寧願找到解決方法,這樣我就可以保持整個共享系統的精簡。 – Luke 2012-03-29 20:44:30

1

即使在最新的XCode和iOS SDK上,我也從來沒有遇到過方法調整相關的錯誤。我使用ShareKit 2.0。雖然在我看來,方法調配是一件需要避免的事情。

如果我記得好的話,調用的方法是viewDidDisappear。看看它做了什麼。在iOS 5上,您可以使用- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion中的完成塊來實現相同的功能。

只要改變你忽略viewController在- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error的方式可能就足夠了。

這只是一個想法,你可能會擺脫方法swizzle。