2

최근에 iOS 5 SDK를 사용하여 Lion 및 Xcode 4.3.1로 업그레이드했으며 공유 라이브러리 ShareKit이 깨졌습니다. 전자 메일 처리기에서 메서드를 사용했습니다. 외관상으로는 Apple에는 banned가 있고 적어도 방법 swizzling를 단계적으로 제거하는 것을 시도했다.ShareKit 방법이 Lion/Xcode 4.3.1에서 활발하게 활동하고 있습니까?

ShareKit은 더 이상 존재하지 않는 파일 </usr/include/objc/objc-class.h>을 가져오고 자체 메서드 Swizzling 메서드 SHKSwizzle을 정의합니다. 당신이이 문제를 해결하는 가장 쉬운 방법은 어떻게 생각하십니까

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

을 : 그것은 다음과 같이 MFMailComposeViewControllerviewDidDisappear: 방법을 변경하기 위해 사용?

+2

'/ usr/include/objc/objc-class.h'를 포함하는 대신'objc/objc-class.h'를 포함하면 황금색이됩니다. –

+0

그것도 존재하지 않습니다 ... – Luke

답변

0

윙윙 거리기는 이메일 공유에만 사용됩니다. MFMailComposeViewController를 직접 사용하고 ShareKit에서 swizzling 코드를 제거하십시오 (SHK.m에 있음).

+0

나는 이것을 깨닫습니다. 나는 수동으로 MFMailComposeViewController를 다시 포장해야하고 싶지 않다 - 나는 전체 공유 시스템을 능률적으로 유지할 수 있도록이 문제를 해결하는 방법을 찾고 싶다. – Luke

1

나는 최신 XCode 및 iOS SDK에서도 방법 관련 문제를 경험하지 못했습니다. 나는 ShareKit 2.0을 사용합니다. 방법 swizzling은 내 의견으로는 피할 수있는 일이지만.

잘 기억하면 swizzled 메서드는 viewDidDisappear입니다. 그것이 무엇인지보십시오. iOS 5에서는 완료 블록 (- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion)을 사용하여 동일한 결과를 얻을 수 있습니다.

단지 - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error의 viewController를 닫는 방법을 변경하는 것으로 충분할 수 있습니다.

이것은 아이디어 일뿐입니다. 어떻게 방법을 없앨 수 있을까요?