Я не очень хорошо знаю цель - c, и я пытаюсь определить делегата приложения для использования его в других классах.
после поиска и в соответствии с некоторыми примерами я обнаружил, что я необходимо создать свойство stati c для сохранения делегата в этом:
.h:
@interface AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
+(AppDelegate *)sharedAppDelegate;
.m:
static AppDelegate *appDelegate = nil;
+(AppDelegate *)sharedAppDelegate{
static dispatch_once_t pred;
static AppDelegate *shared = nil;
dispatch_once(&pred, ^{
shared = [[super alloc] init];
});
return shared;
}
, а затем установить делегат для этого свойства stati c (sharedAppDelegate):
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[[UIApplication sharedApplication] setDelegate:[AppDelegate sharedAppDelegate]];
я использовал этот код на ios 11 и 12 и работал, но в ios 13 (xcode 11.3.1), когда я устанавливаю приложение делегата, экран становится черным, а xcode показывает следующие ошибки:
Thread 1: signal SIGABRT
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
В чем проблема ?
наконец-то я хочу открыть всплывающую страницу ios, чтобы поделиться текстом с другими приложениями, такими как telegram или whatsapp или ... мне нужен этот делегат, чтобы использовать его в других классах, которые я вызываю функциями общего доступа:
void IOS::shareText(const QString &text) {
NSMutableArray *sharingItems = [NSMutableArray new];
if (!text.isEmpty()) {
[sharingItems addObject:text.toNSString()];
}
// get the main window rootViewController
UIViewController *self = [[UIApplication sharedApplication].keyWindow rootViewController];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
if ( [activityController respondsToSelector:@selector(popoverPresentationController)] ) { // iOS8
activityController.popoverPresentationController.sourceView = self.view;
}
[self presentViewController:activityController animated:YES completion:nil];
}
я использую смешанную цель - c с c ++ в qt