Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从AppDelegate调用ViewController.m中的函数?_Ios_Objective C_Iphone - Fatal编程技术网

Ios 如何从AppDelegate调用ViewController.m中的函数?

Ios 如何从AppDelegate调用ViewController.m中的函数?,ios,objective-c,iphone,Ios,Objective C,Iphone,我使用此代码,但得到错误: ld:110架构x86_64的重复符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 如何修复?110个重复符号意味着您遇到的问题比试图从应用程序代理调用视图控制器的serverSync功能要多得多 不要在应用程序代理中执行serverSync,而是将其放在视图控制器的viewDidLoad方法中 更妙的是,创建一个执行serverSync的单例对象,您的视图控制器就可以从那里访问和使用您的服务器数据。110个重复符号意味着您遇到的问题比从应用程序代

我使用此代码,但得到错误:

ld:110架构x86_64的重复符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)


如何修复?

110个重复符号
意味着您遇到的问题比试图从应用程序代理调用视图控制器的
serverSync
功能要多得多

不要在应用程序代理中执行
serverSync
,而是将其放在视图控制器的
viewDidLoad
方法中


更妙的是,创建一个执行
serverSync
的单例对象,您的视图控制器就可以从那里访问和使用您的服务器数据。

110个重复符号
意味着您遇到的问题比从应用程序代理调用视图控制器的
serverSync
功能要多得多

不要在应用程序代理中执行
serverSync
,而是将其放在视图控制器的
viewDidLoad
方法中


更好的是,创建一个执行服务器同步的单例对象,您的视图控制器可以从那里访问和使用您的服务器数据。

您可以使用NSNotificationCenter进行此操作。这是一个例子

在你的AppDelgate.m中

- (void)applicationDidBecomeActive:(UIApplication *)application {
    UIViewController* root = _window.rootViewController;
    UINavigationController* navController = (UINavigationController*)root;


    UIViewController  mycontroller = (UIViewController )[[navController viewControllers] objectAtIndex:0];
    [mycontroller serverSync];
}
在ViewController.m中

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[NSNotificationCenter defaultCenter]
     postNotificationName:@"iOStpoint.wordpress.com"
     object:self];
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

您可以为此使用NSNotificationCenter。这是一个例子

在你的AppDelgate.m中

- (void)applicationDidBecomeActive:(UIApplication *)application {
    UIViewController* root = _window.rootViewController;
    UINavigationController* navController = (UINavigationController*)root;


    UIViewController  mycontroller = (UIViewController )[[navController viewControllers] objectAtIndex:0];
    [mycontroller serverSync];
}
在ViewController.m中

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[NSNotificationCenter defaultCenter]
     postNotificationName:@"iOStpoint.wordpress.com"
     object:self];
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

在appdelegate.m文件中调用该方法的用户NsnotificationCenter您可以在viewcontroller中发布来自appdelegate和addObserver的通知。这是一种更好的方法。用户NsnotificationCenter可以在appdelegate.m文件中调用该方法。您可以在viewcontroller中发布来自appdelegate和addObserver的通知。这是更好的方法。