Belli bir NSNotification gözlemleyerek çeşitli sınıflar varsa, bildirim gönderildiğinde gözlemciler hangi sırada bildirilir?NSNotification bildirimi siparişi bildirimi
cevap
Hangi sipariş bildirimlerinin gönderildiği konusunda herhangi bir garanti verilmez. Bir siparişe ihtiyacınız varsa, bir bildirimi dinleyen ve diğer sınıfların dinleyebildiği çoklu sipariş bildirimlerini gönderen bir sınıf oluşturmak isteyebilirsiniz.
Sipariş tanımsız. Apple, gözlemcilerin listesini yönetir ve bildirim gönderildiğinde, liste üzerinde yinelenir ve her kayıtlı gözlemciye bildirilir. Liste bir dizi veya bir sözlük veya tamamen farklı bir yapı olabilir (örn. Yapıların birleştirilmiş listesi) ve gözlemciler herhangi bir zamanda çalışma zamanında eklenebilir ve çıkarılabilirler, liste de her an değişebilir; Liste şu anda uygulanmaktadır, hiçbir zaman belirli bir siparişe güvenemezsiniz. Ayrıca, herhangi bir OS X güncellemesi, liste dahililerinin değişmesine ve 10.7 için geçerli olanların 10.8 veya 10.6 için geçerli olmayabileceğine neden olabilir.
bunu test ettik ve nesneler addObserver yöntemi ile
bu test içinKonsol çıkışı sıralanır gibi görünüyor:
2016-04-04 22:04:02.627 notificationsTest[1910:763733] controller 8
2016-04-04 22:04:02.629 notificationsTest[1910:763733] controller 1
2016-04-04 22:04:02.629 notificationsTest[1910:763733] controller 2
AppDelegate.m
#import "AppDelegate.h"
#import "ViewController.h"
#include <stdlib.h>
@interface AppDelegate()
@property (strong, readwrite, nonatomic) NSTimer *timer;
@property (strong, readwrite, nonatomic) NSMutableArray *array;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.array = [NSMutableArray array];
ViewController *vc3 = [ViewController new]; vc3.index = 8;
ViewController *vc1 = [ViewController new]; vc1.index = 1;
ViewController *vc2 = [ViewController new]; vc2.index = 2;
[self.array addObject:vc1];
[self.array addObject:vc3];
[self.array addObject:vc2];
self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(sendNotification:) userInfo:nil repeats:YES];
return YES;
}
- (void)sendNotification:(NSNotification *)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationTitle1 object:nil];
}
@end
ViewController.m
#import "ViewController.h"
#import "AppDelegate.h"
@interface ViewController()
@property (assign, readwrite, nonatomic) NSInteger index;
@end
@implementation ViewController
- (instancetype)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(respondToNotification:) name:kNotificationTitle1 object:nil];
}
return self;
}
- (void)respondToNotification:(NSNotification *)notification {
NSLog(@"controller %ld", self.index);
}
@end
- 1. Bildirimi, bildirimi, bildirme
- 2. Parse Push bildirimi nasıl başlatılır Push bildirimi
- 3. Vaka bildirimi
- 4. OCaml bildirimi
- 5. Erişim Bildirimi
- 6. Varolan Bildirimi
- 7. Android bildirimi,
- 8. Bir Parse gönderme bildirimi Belirli bir kullanıcıya push bildirimi
- 9. iOS'ta bir başlık bildirimi nasıl bildirilir?
- 10. FogBugz'da zaman çizelgesi bildirimi?
- 11. Çok Uzun Python Bildirimi
- 12. Python "with" bildirimi sözdizimi
- 13. Android Wear Özel Bildirimi
- 14. Perl Anahtar Bildirimi
- 15. Push Bildirimi Rozetleri Gelmiyor
- 16. Kilitle yeniden sıralama bildirimi
- 17. iOS uygulaması güncelleştirme bildirimi
- 18. Spring MVC Hata bildirimi
- 19. Firebase Push Bildirimi
- 20. Tanımsız Endeksi Bildirimi
- 21. JavaScript anahtarı bildirimi,
- 22. AVPlayer ileri sınıf bildirimi
- 23. Push Bildirimi gönderilemedi
- 24. Olağandışı "statik" yöntem bildirimi
- 25. AVQueuePlayer/AVPlayer yükleme bildirimi?
- 26. SQlite concat select bildirimi
- 27. cepten PDO Bildirimi Hata
- 28. İçe aktarma bildirimi
- 29. Android: Bildirimi Ayarla Görüntü
- 30. Java'da bellek kıtlığı bildirimi
Gözlemleyiciyi eklediklerinden, aynı sırada bildirildiklerine inanıyorum. Her neyse, bu gerçeğe güvenmeyeceğim çünkü bu “NSNotificationCenter” ın içeriğiyle ilgilidir ve gelecekte değişebilir. – atxe