iPhone jak sprawdzić typ obiektu?
Chcę sprawdzić typ obiektu. Jak mogę to zrobić?
Scenariusz jest taki, że dostaję przedmiot. Jeśli ten obiekt jest typu A, wykonaj kilka operacji. Jeśli jest typu B, wykonaj kilka operacji. Obecnie typem obiektu jest C, który jest rodzicem A i B.Mam dwie klasy AViewController
iBViewController
. Obiekt, do którego Wchodzę UIViewController
. Jak sprawdzić czy obiekt jest AViewController
Czy BViewController
?
3 answers
if([some_object isKindOfClass:[A_Class_Name class]])
{
// do somthing
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-02 14:50:35
Istnieje kilka metod na NSObject, które pozwalają sprawdzać klasy.
Najpierw jest -class
, które zwróci klasę Twojego obiektu. Zwróci AViewController lub BViewController.
Następnie są dwie metody, -isKindofClass:
i isMemberOfClass:
.
-isKindOfClass:
porównuje Odbiornik Z klasą przekazaną jako argument i zwraca true lub false w zależności od tego, czy klasa jest tego samego typu czy podklasą danej klasy.
-isMemberOfClass:
będzie porównywać Odbiornik Z klasą przekazaną jako argument i zwraca true lub false na podstawie tego, czy klasa jest ściśle tą samą klasą co dana klasa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-20 10:25:36
Bardziej powszechnym wzorcem w Objective-C jest sprawdzenie, czy obiekt reaguje na metody, którymi jesteś zainteresowany. Przykład:
if ([object respondsToSelector:@selector(length)]) {
// Do something
}
if ([object conformsToProtocol:@protocol(NSObject)]) {
// Do something
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-02 15:17:50