iphone - Xcode4,iOS : Certain parts of instance method being ignored, 没有错误,刚刚过去

标签 iphone objective-c ios xcode

新的 iOS 人员来了。我有一个问题,谷歌搜索和搜索这里没有任何线索。我假设这是基本的。我有一个简单的应用程序(应用程序委托(delegate)和 1 个 View Controller ),作为其中的一部分,我使用本地通知。因此,在应用程序委托(delegate)中,我使用“didReceiveLocalNotification”来监视通知。然后,根据进入的实例方法,我调用主视图 Controller 中的几个实例方法之一。

即在AppDelegate.m中

- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
   MyViewController* controller = [[MyViewController alloc] autorelease];
   if ([[notification.userInfo objectForKey:@"id"] isEqualToString:@"myKey"]) {
     [controller checkActive];
   }
 }

通过记录和观察一些断点,这一切都有效。如果应用程序在后台,则会收到通知,应用程序将打开,并调用正确的实例方法。

我根本无法弄清楚为什么实例方法的某些部分只是被传递,而没有任何效果。举个简单的例子,如果我们有这个:

-(void)checkActive {
    ViewThing.alpha = 1.0;
    NSLog(@"checkActive ran");
}

日志语句将正常显示,但 ViewThing 不会改变。在主视图 Controller 的其他地方,我毫无问题地调用相同的 checkActive 方法,并且它更改了 ViewThing。 (在这种情况下通过另一个界面按钮 IBAction 方法)。

没有错误,没有警告,控制台没有显示任何内容,在 ViewThing 上放置断点表明它命中了线路。我很困惑,看不出尝试从委托(delegate)调用方法与在 IBAction 上调用方法有什么不同。

感谢您的任何提示!

最佳答案

如果 alpha 未正确更改,则可能存在一些问题,其中 1 和 2 最有可能出现。

  1. ViewThingnil。原因可能是 View 已卸载并且您将其设置为 nil 或在设置导出之前调用了 checkActive。

  2. ViewThing.alpha 正在非主线程的线程上设置。尝试在单独的线程上更改 UI 元素将导致未定义的行为,例如从不更新更改或花费较长时间来更新更改。您可以使用[NSThread isMainThread]检查它是否是主线程。

  3. ViewThing 指向不同的 View 。

1和2可以通过日志 View 轻松检查

NSLog(@"checkActive ran %@", ViewThing);

关于iphone - Xcode4,iOS : Certain parts of instance method being ignored, 没有错误,刚刚过去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850042/

相关文章:

ios - MPMoviePlayerViewController 不在 Swift 中播放 .mp4 视频

ios - 在导航 Controller 中嵌入 subview

php - AFNetworking 将 JSON 数组发布为多个单条目字典

objective-c - 绘制前不要清除上下文

ios - 修改低、中、高频核心音频IOS

objective-c - NSNetService 的 TXTRecordData 解析后为零

iPhone:向工具栏添加分段控件而不是导航 Controller 中的按钮?

iphone - CGContextShowTextAtPoint 已弃用 - 我现在应该使用什么?

iphone - 从其他类 Objective-C 访问方法

objective-c - 向下滑动打开文件对话框