Gussobjekt in einem Anruf mit PerformelectoronMaintHread iOS
-
14-11-2019 - |
Frage
wenn ich verwende generasacodicetagpre.
in der Methode - (void) uploaddidend: (ID) Sender
Welches Objekt ist Absender?Im Anruf ist Foo eine benutzerdefinierte Klasse?Wie kann ich diesen Absender in mein Objekt konvertieren?
Ich versuche zu werfen, aber ich habe generasacodicetagpre.
In Benachrichtigungen benutze ich einen Cast von Sender an NSNotification und Benachrichtigung über die Objekteigenschaft, aber für NSTHREAD wurde ich nicht gefunden.
danke.
Lösung
You can think of:
[self performSelectorOnMainThread:@selector(uploadDidEnd:)
withObject:foo
waitUntilDone:YES]
as sort of the same as:
[self uploadDidEnd:foo];
Are you sure that's what you're trying to do?
If so: inside your uploadDidEnd:
implementation, you can cast foo to whatever object type it really is like so:
- (void)uploadDidEnd:(id)sender
{
FooClass *foo = (FooClass *)sender;
[foo doSomething]; // or whatever
}
Andere Tipps
The argument declared a
sender
is the only parameter passed to your method. performSelectorOnMainThread:withObject:waitUntilDone: passes its argument afterwithObject
to the selector to be performed, so yes, herefoo
will be passed to uploadDidEnd:Casting is not a solution. Objective-C is a dynamic language, so even if casting eliminates compiler warnings, the actual implementation of the object wouldn't change, so it naturally would not repond to messages.