Skeeve, liest Du noch mit?
Eigentlich nicht. Aber für Dich mache ich eine Ausnahme.
Ich find' die Diskussion naemlich sehr interessant und habe Frage:
Ich bin den lieben langen Tag damit beschaeftigt, PLIST-formatige Daten hin- und herzuschieben (zwecks Persistenz und auch zwischen Prozessen via NSDistributedNotification zum Beispiel); und ich verstehe noch nicht ganz, warum PLISTs die Kommunikation zwischen Prozessen schwierig machen. Ich finde sie naemlich genau zu diesem Zweck unglaublich praktisch.
Bezieht sich Deine These insbesondere auf die Zusammenarbeit zwischen verschiedenen Betriebssystemen? Oder meinst Du, es sei mit dem Dir vorschwebenden XML leichter, einen veraenderten Datensatz zu verkraften, als speziell mit einer PLIST? (Falls letzteres: warum?)
Offensichtlich habe ich mich wirklich undeutlich ausgedrückt.
Wenn man einfach die plists nimmt, dann ist das sehr bequem und auch okay, wenn man alleine damit arbeitet.
Wenn man hingegen mit "Unbekannten" Daten darüber austauscht, halte ich es für deutlich sinnvoller, ein Format zu definieren in dem die Daten geschrieben werden und sich an dieses Format zu halten.
Wenn ich plists richtig verstehe (und das tue ich wohl nicht) dann sind die im Prinzip nur ein "Speicherabzug" der Daten mit denen das Programm arbeitet. Wenn dem wirklich so ist, dann muß man, spätestens dann, wenn man seine Datenstruktur ändert, einen Konverter zwischen internem und externem Format erstellen, vorausgesetzt man will die Programme der "Unbekannten" nicht "zerstören". Warum also nicht direkt ein Format definieren?
Was mich weiterhin stört ist, daß in plisten ein <key> Element auftaucht, dessen
Daten festlegen, was da kommt. Also werden Daten und Strukturinformationen vermischt.
Was auch noch unschön ist, ist der Vermischung zwischen "Variablentyp" und "Variableninhalt":
<key>Name</key><string>wert</string>
<key>Name</key><integer>wert</integer>
Soweit ja noch verständlich und nachvollziehbar. <key> legt den Namen fest, anschließend folgt ein Element, das den Typ definiert und darin steht der Wert.
Aber warum dann nicht:
<key>Name</key><boolean>wert</boolean>
sondern
<key>Name</key><true/>
<key>Name</key><false/>
inkonsequent!
Hier ist true/false der Wert und der Typ ergibt sich daraus dann als Boolean.
Frage ist auch warum <dict>s nicht hierarchisch sind. Ich empfinde es als unlogisch, wenn ich einen Eintrag suche, anschließend aufs Folgeelement zugreifen zu müssen. Mir fehlt einfach eine sinnvolle Hierarchie (mal wieder auf iTunes bezogen) die den logischen Aufbau wiederspiegelt. Amin hat das zwar alles schön begründet, warum das so ist, ich bezweifle die Gründe aber stark und behaupte frechweg, daß der einzige Grund Faulheit ist; "plist" existiert, "plist" verwendet XML format. Also schreiben wir für den export einfach 'ne plist.
Um zu plisten allgemein zurück zu kommen; Auch wenn Amin es als unlogisch bezeichnet, ich hätter eher was in der Art erwartet:
<string name="name">wert</string>
Aber gut... Die Meinung beruht auf meinen Erfahrungen mit "echten" XML Dateien und nicht mit "mißbrauchten" (nur meine unmaßgebliche Meinung).