協(xié)議內(nèi)部有多個方法,全部使用@optional修飾,執(zhí)行其中一個方法,直接報錯,結果顯示reason: '-[BSGMatchViewController doSendMessageFromJPush:]: unrecognized selector sent to instance 0x1063a1800'。
但是協(xié)議方法:doSendMessageFromJPush在其他頁面執(zhí)行,并沒有在BSGMatchViewController使用,為什么會報錯并顯示以上報錯信息呢?求解
協(xié)議是在AppDelegate頁面設置的,用于監(jiān)聽極光推送并通過協(xié)議發(fā)送對應方法。
AppDelegate.h:
//極光推送收到消息后通過協(xié)議傳遞信息
@protocol BSGJPushRegistrationIDDelegate <NSObject>
@optional
//前兩個發(fā)送給首頁`viewController`,第三個根據(jù)極光推送發(fā)送給其他頁面
//發(fā)送極光推送registrationID
- (void)doSendRegistrationID:(NSString *)registrationID;
//發(fā)送極光推送消息
- (void)doSendMessageFromJPush:(NSMutableDictionary *)content;
-(void)doSendMatchInfoFromJPush:(NSMutableDictionary *)content;
@end
AppDelegate.m:-(void)doSendMatchInfoFromJPush:(NSMutableDictionary *)content協(xié)議方法通過doJPushMatchWithUserInfo方法在- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler處調(diào)用:
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
// Required
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(UNNotificationPresentationOptionAlert); // 需要執(zhí)行這個方法,選擇是否提醒用戶,有Badge、Sound、Alert三種類型可以選擇設置
//此處使用極光推送,參數(shù)由后臺確認并使用。
[self doJPushMatchWithUserInfo:userInfo];
}
而-(void)doJPushMatchWithUserInfo:(NSDictionary *)userInfo內(nèi)部調(diào)用協(xié)議方法:
-(void)doJPushMatchWithUserInfo:(NSDictionary *)userInfo{
BSGLog(@"極光推送消息(全部打?。?@",userInfo);
NSMutableDictionary * infoDictionary = [userInfo mutableCopy];
//此處使用極光推送,參數(shù)由后臺確認并使用。
if (userInfo[@"webview_param"] && userInfo[@"webview_param"][@"type"]) {
[self.delegate doSendMatchInfoFromJPush:infoDictionary];
}
}
有時候執(zhí)行到[self.delegate doSendMatchInfoFromJPush:infoDictionary];這一步會報錯,設了斷點以后,點擊兩次continue后才會報錯,報錯信息如上。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。