我已经在这个艰难的(但对你来说很简单)问题上撞墙了两天。
问题如下:
以下是此代码。
在appdelegate.h中
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) NSString * someString;
@end
在appdelegate.m
#import "AppDelegate.h"
#import "SomeContextExample.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.someString = @"Hello!";
NSDictionary * userInfo = @{SomeContextExampleRef : self.someString};
[[NSNotificationCenter defaultCenter] postNotificationName:@"SomeContextExample"
object:nil
userInfo:userInfo];
return YES;
}
&#34; SomeContextExampleRef&#34;来自.h文件如下:
#ifndef SampleNotWorking_SomeContextExample_h
#define SampleNotWorking_SomeContextExample_h
#define SomeContextExampleRef @"SomeContextExampleRef"
#endif
最后,在viewController.m中:
#import "ViewController.h"
#import "SomeContextExample.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
[[NSNotificationCenter defaultCenter] addObserverForName:@"SomeContextExample"
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note)
{
NSLog(@"got the notification!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! %@", note.userInfo);
}];
}
我的完整代码附在此处: https://github.com/moomoo23/SampleNotWorking
感谢您帮助初学者!
答案 0 :(得分:3)
如果您确信“ViewController
”对象已实例化和/或进入视图,请尝试发布通知。例如。为什么不把它放到一些UIButton触发的“IBAction
”方法中试试呢?
观察视图控制器可能会或可能不会(在您的情况下更不可能)存在于您的应用代表中“application:didFinishLaunchingWithOptions:
”的末尾。
答案 1 :(得分:0)
另一种方法是使用scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
方法在延迟后发布通知。
现在,从概念上讲,为什么你会在appFinsihedLaunching时发布通知?....只是好奇...... e