yunharla
Mitglied
- Dabei seit
- 05.04.2011
- Beiträge
- 65
- Reaktionspunkte
- 4
rofl, nun überforder doch mal das arme Mädel net so
Folgen Sie dem Video unten, um zu sehen, wie Sie unsere Website als Icon auf Ihrem Homescreen erstellen.
Anmerkung: This feature may not be available in some browsers.
Erst kennen wir das Objekt nicht und dann möchten wir dem Objekt, was wir nicht kennen eine Nachricht schicken. Geht gar nicht. Und wie ein Objekt ein anderes verwaltet, ist mir auch noch nicht untergekommen.Nun haben wir eine Situation, wo wir zwar die Nachricht kennen, aber nicht das Objekt, dem wir die Nachricht schicken möchten (zB weil das Objekt A, dem wir die Nachricht schicken möchten, von einem anderen Objekt B verwaltet wird). Im Beispiel könnten wir nun Objekt B sagen: "Bitte schicke Objekt A die Nachricht".
Und nun mit "selector":
Code://eine Variable definieren und initialisieren NSString *meinString = @"HIER IST KARIN"; //keine Ahnung, aber es funktioniert SEL dooferSelector = @selector(lowercaseString); //Eine Variable zum Aufnehmen des Booleschen Werts NSString *kleinGeschrieben = (([meinString respondsToSelector:dooferSelector]) ? @"YES" : @"NO"); //Ausgabe, ob lowercaseString möglich ist NSLog (@"Geht denn lowercaseString: %@", kleinGeschrieben); if ([meinString respondsToSelector:dooferSelector]) //(kleinGeschrieben == @"YES") NSLog(@"alles klein geschrieben: %@" , [meinString lowercaseString]);
Erst kennen wir das Objekt nicht und dann möchten wir dem Objekt, was wir nicht kennen eine Nachricht schicken. Geht gar nicht. Und wie ein Objekt ein anderes verwaltet, ist mir auch noch nicht untergekommen.
In Objective-C geht das, und das wird auch genutzt.
Warum auch nicht, ich fand das immer sehr einleuchtend: Man schickt einfach mal einen Nachricht in den Raum "Hallo, ich will was drucken!" und wenn einer da ist, der's drucken kann, dann macht der das. Wenn nicht, dann halt nicht.
Alle Methoden mit dem gleichen Namen haben den gleichen Selektor.All methods with the same name have the same selector.
"In der Klasse KarinEins habe ich eine Methode 'schuelerQuaelen'. In der Klasse KarinZwo habe ich ebenfalls eine Methode 'schuelerQuaelen'. Ein Selektor würde nun auf beide zugleich zeigen? Oops woher weiß dann das Programm, welche Methode ich denn nun gerne beim Aufruf verwenden möchte?"
[eins schuelerQuaelen];
[zwei schuelerQuaelen];
SEL quaelector = @selector(schuelerQuaelen);
[eins performSelector:quaelector];
[zwei performSelector:quaelector];
DBTABCONTROLLER.Instance.Clients[DBTABCONTROLLER.Instance.selectedtab ? 1 : 0].MetaEntities(SelectedTable, true, new ClientCallBackHandler(){
@Override
public void StartCallBack() {
// TODO Auto-generated method stub
DBTABCONTROLLER.Instance.LoadStart();
}
@Override
public void EndCallBack(boolean success) {
// TODO Auto-generated method stub
if(success)
{
try{
ExceptionResponse except = (ExceptionResponse) this.response;
ab.setMessage(Html.fromHtml("<b><font color=#ff0000>" + except.Message));
ab.setPositiveButton("ok", null);
ab.show();
success = false;
}catch(Exception e)
{
MetadataEntitiesResponse resp = (MetadataEntitiesResponse) response;
if(resp.Entities[0] != null)
{
Tab = resp.Entities[0];
Field = DBTABCONTROLLER.Instance.Clients[DBTABCONTROLLER.Instance.selectedtab ? 1 : 0].DbEntryname;
for(Property prop : Field.Properties)
{
boolean ignoreprop = false;
for(AttributeMetaData Key : Tab.PrimaryKeys )
{
//primary keys should be generated automatically or only set once!!!!!
if(Key.Name.contentEquals(prop.Name) && (Key.IsIdentity || !prop.IsNull))
{
if(!prop.IsNull)
PrimKeys.add(prop);
ignoreprop = true;
break;
}
}
if(!ignoreprop)
{
adapter.add(prop.Name);
}
else
{
adapter.add(prop.Name + ": " + prop.ToString());
}
}
if(PrimKeys.size() == 0)
{
isCreateMode = true;
for(final Property prop: Field.Properties)
{
PropsToUpdate.add(prop);
Log.v(prop.ClassName, prop.ToString());
}
}
}
}
DBTABCONTROLLER.Instance.LoadStop();
}
}
});
@Dalgliesh
Danke Dir. Mir fehlt jedoch das Wissen, um beurteilen zu können, ob das so stimmt. Die Dokumentation von Apple zu diesem Thema ist für einen Newbie nicht zu verstehen.
Dieser Teil stimmt schon semantisch nicht:
Erst kennen wir das Objekt nicht und dann möchten wir dem Objekt, was wir nicht kennen eine Nachricht schicken. Geht gar nicht. Und wie ein Objekt ein anderes verwaltet, ist mir auch noch nicht untergekommen.
hinzunehmen.Warum auch nicht, ich fand das immer sehr einleuchtend: Man schickt einfach mal einen Nachricht in den Raum "Hallo, ich will was drucken!" und wenn einer da ist, der's drucken kann, dann macht der das. Wenn nicht, dann halt nicht.
Ich hatte damals einen sehr starken C-Hintergrund. Objective-C war für mich ein Kulturschock.Ich habe ein wenig Pascal, minimal VBA und C++ drauf und weiß zu jedem Zeitpunkt was ich mache. Davon wegzukommen ist sehr, sehr schwer!
Nein. Schmeiss den Balast weg. Das erleichtert das Verstehen immens.Andernfalls schmeiße ich zum ersten mal das Handtuch. Für eine Mathelehrerin ziemlich traurig. Ich schiebs dann aufs Alter.
$GPRMC,191410,A,4735.5634,N,00739.3538,E,0.0,0.0,181102,0.4,E,A*19
$GPRMB,A,9.99,L,,Exit,4726.8323,N,00820.4822,E,29.212,107.2,,V,A*69
$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45
$GPGSA,A,3,,,,15,17,18,23,,,,,,4.7,4.4,1.5*3F
char *sel;
malloc(sel,7);
strncpy(sel,data,6); // z.B. $GPRMC
sel[6]=0;
sel(data); // hier wird die Funktion $GPRMC oder die Funktion $GPGGA usw.
// aufgerufen, geht natürlich nicht in C