2012-10-26 38 views
7

我想使用UIActivityViewController將新的iOS 6共享功能添加到我的應用程序。我有一些我想要分享的文本,如果他們選擇電子郵件,我也想自動設置電子郵件的主題。UIActivityViewController崩潰,NSCFConstantString _beforeActivity無法識別的選擇器發送到實例

NSArray *activityItems = @[resultString]; 
NSLog(@"items=%@", activityItems); 

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard]; 

UIActivityViewController *activityController = 
    [[UIActivityViewController alloc] initWithActivityItems:activityItems 
             applicationActivities:activities]; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    self.popover = [[UIPopoverController alloc] initWithContentViewController:activityController]; 
    // the line above is where the error happens. 
    [self.popover presentPopoverFromBarButtonItem:self.emailResultsButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} else { 
    [self presentViewController:activityController 
         animated:YES 
        completion:nil]; 
} 

這裏是代碼的輸出包括錯誤消息:在iPad 2 iOS6的

[694:907] items=(
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor accumsan mi eu mollis. Fusce condimentum dictum lectus, eu ultrices urna vulputate eu." 
) 
[694:907] -[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8 
[694:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8' 
*** First throw call stack: 
(0x35add2a3 0x37a1497f 0x35ae0e07 0x35adf531 0x35a36f68 0x361dc7a3 0x361dc52d 0x36067595 0x36434d31 0x3642fe07 0x2990b 0x361330ad 0x36133135 0x361330ad 0x3613305f 0x3613303d 0x361328f3 0x36132de9 0x3605b5f9 0x36048809 0x36048123 0x37bd15a3 0x37bd11d3 0x35ab2173 0x35ab2117 0x35ab0f99 0x35a23ebd 0x35a23d49 0x37bd02eb 0x3609c301 0x1ef9d 0x1ef30) 
libc++abi.dylib: terminate called throwing an exception 

我運行此。有任何想法嗎?

編輯:它出現,如果我不提供活動數組,然後一切似乎工作正常。仍在縮小問題的範圍。

+0

如果關閉ARC,問題是否會持續存在? (我預測是的) – 2012-10-26 18:37:35

+0

關掉ARC不是像翻轉開關......但我繼續玩耍。當我不提供活動數組時,它看起來問題消失。 –

+0

好吧,只需暫時關閉編譯器標誌。不介意內存泄漏。 – 2012-10-26 18:41:05

回答

16

例外說明了一切:你正在傳遞數組:

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard]; 

文檔說的方法需要UIActivity對象的列表:

applicationActivities

表示您的應用程序支持的自定義服務的UIActivity對象數組。該參數可能爲零。

請注意,這是爲定製活動;例如如果你想提供你自己的DropBox集成以及現有的服務。

編輯:至於活動類型,他們只出現在UIActivity.activityTypeUIActivityItemProvider.activityTypeUIActivityViewController.excludedActivityTypes-[UIActivityItemSource activityViewController:itemForActivityType:]使用。

+0

Aaaaand我們在這裏有一個贏家! +1。 – 2012-10-26 18:46:03

+0

謝謝,就是這樣。現在我必須弄清楚爲什麼Facebook沒有出現在名單中。也許我沒有在這個設備上登錄到Facebook。 –

+4

我希望ObjC輸入了數組,所以我們不會有這個問題。 NSArray 本來可以完全避免這種情況。 –

相關問題