2016-07-03 100 views
4

我在我的項目中添加ios默認共享工作表/ UIActivityViewController時遇到問題。它可以在模擬器上正常工作,但當它使用usb電纜或testflight在設備(iPhone)上運行時會崩潰。該錯誤消息我得到的是:UIActivityViewController在設備上呈現時崩潰

*終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: '* - [__ NSCFString rangeOfString:選項:範圍:區域:]:無參數' ***第一擲調用堆棧: (0x182ddedb0 0x182443f80 0x182ddecf8 0x1836d2ac8 0x1928f90cc 0x1928f8394 0x187f3cc40 0x187f3c844 0x1888f5050 0x182cd6584 0x182ccd2ac 0x1888f4c9c 0x1888f5560 0x187f3cc40 0x187f3c844 0x1883b4bd8 0x18813cc78 0x187f3cc40 0x187f3c844 0x1882c4228 0x1882bd3b8 0x1882bee54 0x1882c1890 0x1880373cc 0x1001ae7b8 0x187f74be8 0x187f74b64 0x187f5c870 0x187f74454 0x187f2cc0c 0x187f6d610 0x187f6cc0c 0x187f3d04c 0x187f3b628 0x182d9509c 0x182d94b30 0x182d92830 0x182cbcc50 0x1845a4088 0x187fa6088 0x10013 7c88 0x18285a8b8) 的libC++ abi.dylib:與類型NSException

這裏捕獲的異常終止是我用

-(void)share { 
    NSString *item = @"test"; 
    NSArray *items = @[item]; 

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil]; 
    [self presentViewController:activityVC animated:YES completion:nil]; 
} 

代碼它崩潰與 「presentViewController」 的路線。我確定activityVC不是零,如果我嘗試呈現常規視圖控制器,它不會崩潰。在崩潰之前,有stack trace

我嘗試了一個空的項目完全相同的代碼,它工作在兩個模擬器和設備這就是爲什麼我懷疑問題可能是與項目/構建設置

+0

我試過你的代碼。它在模擬器上正常工作。我想你在別的地方錯誤地傳遞了字符串。呃,代碼的其他部分。 – user3182143

+0

更多的堆棧跟蹤在調試時會很有用。 –

+0

感謝您的回覆,我更新了完整的錯誤消息以及我的項目堆棧跟蹤,並在崩潰前更新了我的問題。我也嘗試將局部變量更改爲私有屬性,以防它們中的任何一個被過早釋放。就像@ user3182143所說的,我相信它與代碼的其他部分有關。但是在展示activityViewController時它只會在設備上崩潰,它在呈現其他VC時工作。我確定所有變量在被調用時仍然存在。我找不到在此過程中調用的任何其他代碼部分 –

回答

4

原來我需要爲了排除空投爲它在設備上工作。

activityVC.excludedActivityTypes = @[UIActivityTypeAirDrop]; 

我不知道爲什麼是這樣的話,因爲我可以包括空投在其他項目上(與相同的IOS版本在同一臺設備上測試)就好了。可能有一些項目設置可能允許/禁止AirDrop。這個答案適用於我,因爲我不需要AirDrop來處理當前的項目,但是如果有人能夠解釋爲什麼UIActivityTypeAirDrop只會在我的項目中崩潰,我將不勝感激

1

我遇到了同樣的問題並通過刪除以下代碼從我的UIViewController類別。

- (void)setTitle:(NSString *)title { 
    // ... 
} 
相關問題