Czy ktoś może mi pokazać przykład obiektu Obak-C Cocoa, z niestandardowym powiadomieniem, jak go uruchomić, zasubskrybować i obsłużyć?Przykład powiadomienia niestandardowego kakao
Odpowiedz
@implementation MyObject
// Posts a MyNotification message whenever called
- (void)notify {
[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self];
}
// Prints a message whenever a MyNotification is received
- (void)handleNotification:(NSNotification*)note {
NSLog(@"Got notified: %@", note);
}
@end
// somewhere else
MyObject *object = [[MyObject alloc] init];
// receive MyNotification events from any object
[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil];
// create a notification
[object notify];
Aby uzyskać więcej informacji, zobacz dokumentację dla NSNotificationCenter.
Jaki jest sens korzystania z powiadomień? Dlaczego po prostu nie wywołasz bezpośrednio funkcji [object handleNotification]? –
Luźne połączenie. Zanotuj komentarz "// gdzie indziej" ... Powiadomienie jest rodzajem wiadomości rozgłoszeniowej. Każda instancja obiektu może wysłuchać powiadomienia i nie musi dostosowywać się do żadnego konkretnego protokołu delegata lub podobnego. Może być wiele instancji słuchających pojedynczej wiadomości. Nadawca nie musi mieć wskaźników do wystąpień obiektu, które chce powiadomić. –
Krok 1:
//register to listen for event
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(eventHandler:)
name:@"eventType"
object:nil ];
//event handler when event occurs
-(void)eventHandler: (NSNotification *) notification
{
NSLog(@"event triggered");
}
Krok 2:
//trigger event
[[NSNotificationCenter defaultCenter]
postNotificationName:@"eventType"
object:nil ];
Och, dziękuję bardzo za świetny przykład. Dokładnie tego potrzebuję. – d12frosted
Przepiękny :) Wielkie dzięki –
Upewnij się wyrejestrować powiadomienia (obserwator), gdy obiekt jest zwalniane. Dokumentacja Apple stwierdza: "Zanim obiekt obserwujący powiadomienia zostanie zwolniony, musi powiadomić centrum powiadomień, aby przestał wysyłać powiadomienia".
dla miejscowych Powiadomienia następny kod jest zastosowanie:
[[NSNotificationCenter defaultCenter] removeObserver:self];
A dla obserwatorów rozmieszczonych Uwagi:
[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
- 1. Widok powiadomienia niestandardowego
- 2. Układ niestandardowego powiadomienia Android z RemoteViews
- 3. Jak używać Reaktywnego kakao z powiadomieniami
- 4. Tworzenie niestandardowego pliku, na przykład podpowiedzi python obiektu?
- 5. Monitorowanie katalogu w kakao/kakao Touch
- 6. Widok niestandardowy kakao dla NSMenuItem
- 7. Globalne skróty do kakao?
- 8. Dwukierunkowa mapa w kakao
- 9. Przykład makiety RSpec Przykład
- 10. FSEvents C++ Przykład
- 11. Przykład NSNotification userinfo?
- 12. przykład
- 13. node.js Dodatki wykorzystujące strukturę kakao
- 14. iPhone Powiadomienia powiadomień pocztowych
- 15. Kakao Sprawdź aktualizacje
- 16. kakao użytkownika Resizable Odwiedzin
- 17. Kakao NSStatusBar Global HotKey
- 18. Brązowy szum na kakao
- 19. Używanie NSFontPanel w kakao
- 20. Funkcje pomocnicze w kakao
- 21. Nawigacja Breadcrumb dla kakao
- 22. Delegat aplikacji - kakao
- 23. Bezokienowa aplikacja kakao
- 24. Wyłączyć rozciąganie okna kakao?
- 25. Kakao NSString eksploduje
- 26. Błąd składni kapsuły kakao
- 27. Przykład wykresu kołowego JasperReport Przykład
- 28. Przykład faktoryzacji macierzy sklearn przykład
- 29. Lepsze powiadomienia w zasobniku
- 30. Czy można zmienić domyślny styl powiadomienia powiadomienia po instalacji aplikacji?
Vague pytanie. Spróbuj zadać bardziej szczegółowe pytanie lub przeszukaj dokumentację Apple. – danielpunkass
Ja normalnie nie wypowiedziałbym się na takie pytanie, ale widząc jak otrzymałeś "con", moje może być "pro". To pytanie pozwala na * zwięzłą * odpowiedź zajmującą się ściśle tematem. Chcę tylko dowiedzieć się jednej prostej rzeczy - nie * przeszukać * dokumentacji jabłka (która i tak byłaby i tak warta). Dziękuję za pytanie. Widzę, że twoje +15 atm na pytanie jest zgodne z moim sentymentem. – Jacksonkr
+1. Dzięki. –