2

最近、iOS 5 SDK を使用して Lion と Xcode 4.3.1 にアップグレードしましたが、共有ライブラリのShareKitが壊れています。メール ハンドラーにメソッド スウィズリングを使用していました。どうやら Apple は、メソッドの入れ替えを禁止するか、少なくとも段階的に廃止しようと試みているようです。

ShareKit は、</usr/include/objc/objc-class.h>もはや存在しないファイルをインポートし、独自のメソッド スウィズリング メソッドを定義しますSHKSwizzle。これを使用して、MFMailComposeViewControllerviewDidDisappear:メソッドを次のように変更します。

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

これを回避するための最善かつ最も簡単な方法は何だと思いますか?

4

2 に答える 2

1

最新のXCodeやiOSSDKでも、メソッドのスウィズリング関連のエラーを経験したことはありません。ShareKit2.0を使用しています。私の意見では、メソッドのスウィズリングは避けるべきものですが。

よく覚えていれば、スウィズルされたメソッドは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

スウィズリングは、電子メールの共有にのみ使用されています。自分で MFMailComposeViewController を使用し、ShareKit からスウィズリング コードを削除します (SHK.m にあります)。

于 2012-03-28T23:16:55.553 に答える