Emlak listesi - Property list

Emlak Listesi
Dosya adı uzantısı
.plist
İnternet medya türü
application / x-plist
Tekdüzen Tip Tanımlayıcı (UTI)com.apple.property-list
Tarafından geliştirilmişApple Bilgisayar ve GNUstep,
vakti zamanında Sonraki
Biçim türüSerileştirme nın-nin sözlük nesneler.

İçinde Mac os işletim sistemi, iOS, Sonraki adım, ve GNUstep programlama çerçeveler, mülkiyet listesi dosyalar depolayan dosyalardır serileştirilmiş nesneler. Mülk listesi dosyaları şunu kullanır: dosya adı uzantısı .plistve bu nedenle genellikle şu şekilde anılır p listesi Dosyalar.

Mülk listesi dosyaları genellikle bir kullanıcının ayarlarını saklamak için kullanılır. Ayrıca aşağıdakiler hakkında bilgi depolamak için kullanılırlar: Paketler ve uygulamalar tarafından sunulan bir görev kaynak çatalı eski Mac OS'de.

Mülk listeleri ayrıca şunlar için kullanılır: yerelleştirme geliştirme için dizeler. Bu dosyalar, .Teller veya .stringsdict uzantılar. İlki, parantezler olmadan yalnızca bir sözlük içeren "küçültülmüş" eski stil bir plisttir (bkz. propertyListFromStringsFileFormat),[1] ikincisi ise tam teşekküllü bir komplo. XCode ayrıca bir .pbxproj proje dosyaları olarak kullanılan eski stil plistlerin uzantısı.

Beyanlar

Mülk listeleri tarafından temsil edilen veriler bir şekilde Öz, temel dosya formatı birçok şekilde uygulanabilir. Yani, Sonraki adım bir özellik listesini temsil etmek için bir biçim kullandı ve sonraki GNUstep ve Mac os işletim sistemi çerçeveler farklı formatlar sunmuştur.

Sonraki adım

Altında Sonraki adım mülk listeleri, insan tarafından okunabilir ve elle düzenlenmiş, serileştirilmiş ASCII gibi bir sözdiziminde Programlama dili. Aynı biçim, OpenStep.

  • Dizeler C değişmez stilinde temsil edilir: "Bu bir plist dizesidir n"; Daha basit, tırnaksız dizelere alfanümerikler ve aşağıdakilerden biri olduğu sürece izin verilir: _$+/:.-.
  • İkili veriler şu şekilde temsil edilir: < [ASCII'de onaltılık kodlar] >. Eşleştirilmiş onaltılık kodlar arasındaki boşluklar ve yorumlar dikkate alınmaz.
  • Diziler şu şekilde temsil edilir: ( "1", "2", "3" ). Sondaki virgüller tolere edilir.
  • Sözlükler şu şekilde temsil edilir: {"anahtar" = "değer"; ...}. Sol taraf bir dizge olmalıdır, ancak tırnaksız olabilir.
  • Yorumlara şu şekilde izin verilir: / * Bu bir yorumdur * / ve // Bu bir satır yorumudur.
  • C'de olduğu gibi, boşluklar genellikle sözdizimi için önemsizdir. Değer ifadeleri noktalı virgülle sonlanır.

Orijinal NeXT özellik listesi formatının bir sınırlaması, bir NSValue (sayı, boole, vb.) Nesnesini temsil edememesidir. Sonuç olarak, bu değerlerin dizeye dönüştürülmesi ve uygulama tarafından "belirsiz" olarak kurtarılması gerekecektir.[2] Diğer bir sınırlama, resmi 8 bitlik kodlamanın tanımlanmamış olmasıdır.[3]

varsayılanlar OpenStep (1998) 'de tanıtılan yardımcı program, tercihlerin depolanması için kullanılan plist dosyalarını işlemek için kullanılabilir ( varsayılanlar NeXTSTEP'te, tercihler etki alanı aracılığıyla komut satırında ve bu yardımcı program rastgele plist dosyalarını düzenlemek için kullanılabilir. Bu yardımcı program, üç eski komutun yerini aldı.[4]

GNUstep

GNUstep, NSValue ve NSDate veri türlerini temsil etmek için eklemelerle NeXTSTEP biçimini benimser. Yeni yazılan girişler forma sahip <*T...>, nerede T tek harfli bir tür koddur. Örneğin, bir Boole YES NSValue şu şekilde temsil edilir: <*BY> ve NSDate nesneleri şu şekilde temsil edilir: <*DYYYY-MM-DD HH:MM:SS +ZZZZ>.[5][6] İkili veriler ayrıca daha verimli Base64 biçimlendir <[ b64... ]>. Çoğu dağıtım UTF-8 kullandığından, 8 bit sorunu da dolaylı olarak çözülür. Neticede, NSPropertyListGNUstepFormat İnsan tarafından okunabilir metin biçiminin ifade gücünü ve kompaktlığını Apple'ın XML biçimiyle aynı seviyeye getiriyor.

GNUstep ayrıca kendi ikili biçimine sahiptir, NSPropertyListGNUstepBinaryFormat, Uygulanan NSSerialization. Bu biçim, bazı verilerden önce gelen tek baytlık bir tür işaretleyici ile metin biçimleri gibi yinelemeli olarak tanımlanır. Bir çeşit string interning bir GS uzantısı ile desteklenir shouldBeCompact değiştirmek.[7]

GNUstep'te iki göreli bağımsız plist işleyicisi bulunur: CFPropertyList içinde libs-core-base (CoreFoundation) ve NSPropertyList içinde libs-base (Temel Kiti). Her ikisi de macOS tarafından kullanılan ikili ve XML formlarını bir dereceye kadar destekler, ancak ikincisi çok daha eksiksizdir. Örneğin, GNUstep'e özgü iki biçim yalnızca ikincisinde ele alınır.[8]

GNUstep, aşağıdakilere dayalı bir dizi plist komut satırı aracı sağlar: NSPropertyList, bir sürümü dahil pl[9] ve varsayılanlar.[4]

Mac os işletim sistemi

MacOS, NeXTSTEP formatını da okuyabilirken, Apple, biri XML tabanlı ve diğeri ikili olmak üzere kendine ait iki yeni formatı bir kenara koyuyor. Apple ayrıca kısmen uyumlu bir JSON formatına (NSJSONSerialization).

Tarih

İçinde Mac OS X 10.0 NeXTSTEP formatı kullanımdan kaldırıldı ve yeni XML format halka açık bir şekilde tanıtıldı DTD tarafından tanımlandı elma. XML formatı, ASCII olmayan karakterleri ve NSValue nesnelerini saklamayı destekler (ki bu, GNUstep'in ASCII özellik listesi formatının aksine, Apple'ın ASCII özellik listesi formatı desteklemez).[10]

Ancak XML dosyaları, yer açısından en verimli depolama aracı olmadığından, Mac OS X 10.2 özellik listesi dosyalarının ikili dosyalar olarak saklandığı yeni bir biçim sundu. İle başlayan Mac OS X 10.4 bu, tercih dosyaları için varsayılan biçimdir. İçinde Mac OS X 10.7, dosya okuma ve yazma desteği JSON format tanıtıldı. JSON ve mülk listeleri birbiriyle tam olarak uyumlu değildir. Örneğin, mülk listeleri, JSON biçiminin desteklemediği yerel tarih ve veri türlerine sahiptir. Tersine, JSON izin verir boş değerler, özellik listeleri ise açık boş değerleri desteklemez.

Takımlama

Yaşlı varsayılanlar NeXTSTEP aracı kullanılabilir durumda kalır. / usr / libexec / PlistBuddy komutu etkileşimli bir plist düzenleyici sağlar. Ayrıca komut dosyası da yazılabilir.[11]

Plutil yardımcı program (tanıtıldı Mac OS X 10.2 ) özellik listelerinin sözdizimini kontrol etmek veya bir özellik listesi dosyasını bir formattan diğerine dönüştürmek için kullanılabilir. Ayrıca plistlerin Objective-C veya Swift nesne değişmez değerlerine dönüştürülmesini de destekler.[12] Kakao gibi NSPropertyListSerialization üzerine kuruludur, "eski tip" girdileri alır, ancak bu türe dönüştürmez. (Kakao NSSerializer Mac OS X 10.2 eski tarz çıktı yaymadan öncekinden.)

pl yardımcı program Mac OS X v10.5'te tanıtılmıştır. Herhangi bir girdiyi alır ve "eski tarz" plistleri oluşturmaya çalışır.[13][a] GNUstep sürümü gibi, görünüşe göre açıklama Plistlerde bulunan ve Apple'ın geçerli eski stil plistleri üretmek için belirttiği Temel türlerinin özelliği.[b]

İç kısımlar açısından, Apple, C'lerinde eski stil, XML ve ikili formatlar için açık kaynaklı bir ayrıştırıcı sağlar. Çekirdek Vakfı CFPropertyList olarak kod. Ancak, tüm yardımcı programlar ve sistemin çoğu parçası, Obj-C Foundation Kit'teki kapalı kaynak NSPropertyList ayrıştırıcısını kullanır. Swift yeniden uygulaması açık kaynaktır ancak aynı olacağı garanti edilmez.

Biçim

XML ve JSON özellik listeleri herhangi bir metin düzenleyicide elle düzenlenebilir. Ek olarak, Apple şu konularda destek sağlar: Xcode ikili formatta biçimlendirilmiş plistleri işleyebilen hiyerarşik bir görüntüleyici / düzenleyicide özellik listelerini düzenlemek için veya XML, Ama değil JSON. İtibariyle Mac OS X 10.4 Apple, AppleScript Sistem Olayları uygulaması aracılığıyla özellik listesi dosyalarını okumak için arabirim. İtibariyle Mac OS X 10.5 Apple, AppleScript özellik listesi dosyalarını düzenlemek, oluşturmak ve yazmak için arayüz.[14]

XML biçimi için etiketler, ilgili Foundation sınıfları ve CoreFoundation türleri ve veri depolama biçimleri aşağıdaki gibidir:

Foundation sınıfıCoreFoundation türüXML EtiketiDepolama biçimi
NSStringCFString<string>UTF-8 kodlu dize
NSNumberCFNumber<real>, <integer>Ondalık dize; gerçeklerin üsleri olabilir veya Sonsuzluk (inf) veya NaN (nan) olabilir.
NSNumberCFBoolean<true/>, <false/>Veri yok (yalnızca etiket)
NSDateCFDate<date>ISO 8601 biçimlendirilmiş dize
NSDataCFData<data>Base64 kodlanmış veriler
NSArrayCFArray<array>Herhangi bir sayıda alt öğe içerebilir. Boş olabilir.
NSDictionaryCFDictionary<dict>Alternatif <key> etiketleri ve plist öğesi etiketleri. Boş olabilir.

İkili dosya biçim, bir yorum bloğunda belgelenmiştir. Çekirdek Vakfı C kodu kaynak dosyası (CF / CFBinaryPList.c) Apple'ın Foundation kütüphanesindeki ikili plistlerin açık kaynaklı uygulaması için.[15] Apple, plist (5) kılavuz sayfası belgelerinde uygulamayı opak olarak tanımlar,[16] Bu, formata güvenmenin cesaretini kırdığı anlamına gelir. İkili dosya biçiminde sihirli sayı (dosyanın geçerli bir plist dosyası olduğunu gösteren ilk birkaç baytı) metindir bplistve ardından biçimin sürümünü gösteren iki bayt gelir.

İkili dosya, XML veya JSON dosya formatlarında yakalanamayan bazı bilgileri depolayabilir. Dizi, küme ve sözlük ikili türleri aşağıdakilerden oluşur: işaretçiler - objref ve keyref girişleri - dosyadaki bir nesne tablosuna indeksleyen. Bu, ikili plistlerin - örneğin - ayrı bir dizinin ve bir dosyada serileştirilmiş sözlüğün her ikisinin de içlerinde depolanan aynı veri öğesine sahip olduğu gerçeğini yakalayabileceği anlamına gelir. Bu, bir XML dosyasında yakalanamaz. Böyle bir ikili dosyanın dönüştürülmesi, veri öğesinin bir kopyasının XML dosyasına yerleştirilmesiyle sonuçlanacaktır. Ayrıca ikili dosya, serileştirildiğinde veri öğelerini tanımlamak için kullanılan bir UID türüne sahiptir. C kodu kaynak dosyasından alınan depolanabilecek verilerin tam listesi aşağıdaki gibidir:

İkili plist nesne biçimleri (CoreFoundation 1153'ten itibaren)[15]
Foundation sınıfıCoreFoundation türüNesne türüİşaretçi baytıKodlanmış veriler
sıfırsıfırboş (v "1?" +)0000 0000n / a
NSNumberCFBooleanbool0000 1000 (yanlış)
0000 1001 (doğru)
n / a
NSURLCFURLurl (v "1?" +)0000 1100 (temel dizi)
0000 1001 (dize)
dize: Özyinelemeli kodlamada URL dizesi ("dizge nesne biçimi?" gibi); temel dize: aynı, ancak önce kodlanmış bir temel URL ile.
NSUUIDCFUUIDuuid (v "1?" +)0000 111016 bayt UUID
doldurmak0000 1111hiçbir şey - sadece bir dolgu
NSNumberCFNumberint0001 nnnnBayt sayısı 2 ^ nnnn, big-endian bayttır (1, 2, 4 veya 8)
NSNumberCFNumbergerçek0010 nnnnBayt sayısı 2 ^ nnnn, big-endian bayt (4 veya 8)
NSDateCFDatetarih0011 00118 bayt float izler, big-endian baytlar; 1/1 / 2001'den itibaren saniye (Temel veri dönem)
NSDataCFDataveri0100 nnnn [int]nnnn, 1111 olmadıkça bayt sayısıdır, ardından int sayım ve ardından bayt
NSStringCFStringdizi0101 nnnn [int]ASCII dizesi, nnnn karakter sayısıdır, aksi takdirde 1111 sonra int sayımı, ardından bayt sayısıdır
NSStringCFStringdizi0110 nnnn [int]Unicode dizesi, nnnn karakter sayısıdır, aksi takdirde 1111 sonra int sayılır, sonra big-endian 2 baytlık uint16_t
NSStringCFStringdizi (v "1?" +)0111 nnnn [int]UTF-8 dizesi, nnnn karakter sayısıdır, aksi takdirde 1111 sonra int sayımı, ardından bayt sayısıdır
NSNumberCFNumberUID1000 nnnnnnnn + 1, big-endian bayt sayısıdır (1, 2, 4 veya 8). İmzasız int, yalnızca tarafından üretilir NSKeyedArchiver (aşağıya bakınız).[17]
NSArrayCFArraydizi1010 nnnn [int]objref * nnnn sayılır, '1111' olmadığı sürece, int sayım gelir
NSOrderedSetordset (v "1?" +)1011 nnnn [int]objref * nnnn sayılır, '1111' olmadığı sürece, int sayım gelir
NSSetCFSetAyarlamak (v "1?" +)1100 nnnn [int]objref * nnnn sayılır, '1111' olmadığı sürece, int sayım gelir
NSDictionaryCFDictionarydikte etmek1101 nnnn [int]keyref * objref * nnnn sayılır, '1111' olmadıkça, int sayım gelir

Not v "1?" + birçok türde not. Bu, işaret baytının yalnızca biçim sürümü "1?" Den daha düşük olmayan dosyalarda bulunduğu anlamına gelir. sihirli sayı. CFBinaryPlist uygulaması yalnızca "0?" Sürümünü işlediğinden, bunları ayrıştırmanın kesin yolu eski türleri çözümlemekten daha belirsizdir. NSKeyedArchiver zaten bu bilgileri yakalayabildiğinden, pratikte bu türlerle asla karşılaşılmaz.

Nesne tablosunu bir ofsetler tablosu izler, ardından iki tablonun boyutu ve konumu hakkında bilgi içeren bir fragman gelir.

Plist'e seri hale getiriliyor

Özellik listeleri, rastgele bir nesneyi tanımlamak için gereken tüm bilgileri ve veri türlerini yakalamadığı için, genellikle fazladan bir kodlama ve kod çözme katmanı yapılır. OpenStep belirtimi, herhangi bir NSObject altında NSCoding protokol. Bu protokolü uygulayan herhangi bir sınıf, örneklerini bir NSCoder başka bir biçime alt sınıf.[18] Nesneleri plistlere serileştirmek için iki ana kodlayıcı vardır:

  • NSArchiver, bir nesneyi etiketli bir yapı gibi bir ikili veri bloğuna dönüştürür. Bu sınıf OpenStep'in bir parçasıdır, ancak somut bir format tanımlanmamıştır. Pratikte, bir nesneyi bir dosyaya serileştirmek (plist'i atlamak) veya verileri bir pliste gömmek için kullanılabilir. Yazıldığı sırayla okunmalı ve yazılmalıdır. Tanımı NSKeyedArchiver kullanımını reddediyor.
  • NSKeyedArchiver, Mac OS X 10.2'de sunulan, nesneyi bir NSDictionary. Bu formatın programcılar için temel iyileştirmesi, üyelere sabit bir sırayla değil, dizgi anahtarlarıyla erişmesidir. Dahili olarak, adı verilen bir nesne tablosu dizisini depolayarak ikili plist formatını bir şekilde tekrarlar. $ nesneler sözlükte. Sınıf bilgisi dahil diğer her şey bir UID işaretçisi tarafından referans alınır. Bir $ top diktenin altındaki giriş, programcının kodlamak istediği en üst düzey nesneyi gösterir.[17]

Diğer şeylerin yanı sıra, bir arşivleyici kullanmak, yeni veri türlerinin plist biçimini değiştirmeden kodlanmasına izin verir ve Apple'ın NSSets ve boş değerler gibi şeyleri kodlaması için tercih edilen yoldur. Biçimlerin ayrıştırılması biraz daha zor, çünkü bazı sınıflar için plistlerin desteklemesi gereken bir katman daha takip edilmesi gerekiyor. Aynı zamanda bir nesne tablosuna sahip olan ikili format gibi, içinde dairesel referanslar oluşturmak mümkündür. NSKeyedArchiver. XML'de bir UID veri türü olmadığından, tamsayılar bir sözlükte "CF $ UID" anahtarı altında saklanır.[19]

Apple bir açık kaynak yayınlıyor NSKeyedArchiver Swift Corelibs Vakfı'nda; Kapalı kaynaklı Apple Foundation gibi, çıktı biçimlerini yalnızca ikili ve XML ile sınırlar. Ayrıca serileştirmenin sonuçlarını gösteren bazı test senaryoları da vardır.[20] GNUstep ayrıca çıktı formatlarını sınırlamayan uyumlu bir uygulamaya sahiptir.[21]

Yol dili

Mülk listeleri için standartlaştırılmış tek bir yol dili yoktur. XPath XML için yapar, ancak çeşitli programlar tarafından kullanılan resmi olmayan kurallar mevcuttur.

  • Bir nokta sözdizimi sürümü bulunur ana yol Apple'ın argümanı Plutil. Kaynak gibi görünüyor (id) - [NSObject (NSKeyValueCoding) valueForKeyPath:].[12]
  • Tarafından farklı bir format kullanılır PlistBuddy, indeksleme için iki nokta üst üste sözdizimi ile.[11]

Hiçbir format, içinde ayırıcı karakter bulunan bir anahtarı ifade edemez.

Diğer platformlar

pencereler

İOS ve macOS dahil olmak üzere Apple veya Darwin sistemlerinde en iyi bilinmesine rağmen, plist dosyaları iTunes gibi Apple yazılımlarında Windows bilgisayarlarda da mevcuttur.[22] veya Safari[23] kurulur. Windows'ta dosyalar genellikle ikili dosyalardır,[24] bazı uygulamalar diğer biçimlerde PLIST dosyaları oluştursa da.

Windows'ta Apple plist dosyaları, kullanıcının ana dizininde şu şekilde saklanır: % USERPROFILE% AppData Roaming Apple Computer. Windows'taki bu plist dosyaları genellikle Windows kayıt defterini kullanmak yerine tercihleri ​​ve diğer bilgileri depolar.

Windows'ta PLIST dosyalarını düzenleme seçenekleri, macOS'taki kadar kapsamlı değildir. Dosya XML veya JSON formatındaysa dikkatli bir şekilde bir metin düzenleyici, örneğin Notepad ++ kullanılabilir. Apple, "Apple Uygulama Desteği" paketi içinde bir plutil.exe gönderir ( iTunes ) ve macOS muadili ile aynıdır.

NetBSD

2006 yılında tanıtıldı ve ilk olarak NetBSD # 4.0 (2007), çekirdek ve kullanıcı alanı arasında verileri serileştirmek için kullanılabilen bir proplib kitaplığıdır. XML plist dilinin bir bölümünü uygular.[25]

Proplib'in örnek kullanıcılarından biri, sysmon'un ikinci revizyonudur. envsys için çerçeve sistem izleme.

NetBSD'nin proplib kitaplığı da 2010 yılında DragonFly'a taşınmıştır ve şu tarihten beri mevcuttur: Yusufçuk BSD # 2.8.[26]

Çapraz platform

  • Facebook açık kaynak kodlu yeniden uygulaması Xcode derleme aracı, xcbuild, bir plist kitaplığının yanı sıra Plutil ve PlistBuddy. Bu çapraz platform yardımcı programları şu şekilde yazılmıştır: C ++.[27]
  • Python programlama dili yerleşik plistlib plist dosyalarını okumak ve yazmak için, Apple XML veya ikili olarak (Python 3.4'ten beri) modül.[28] ProperTree, bu kitaplığı kullanan bir çapraz platform editörüdür.[29]
    • Ccl-bplist adlı bir üçüncü taraf kitaplığı, NSKeyedArchiver UID'lerini işlemek için ek beceriye sahiptir.[19]
  • Git var plist dört tür plisteyi destekleyen paket: OpenStep metni, GNUStep metni, Apple XML ve Apple İkili. Ayrıca XML ve ikili formatlardaki UID'leri de işler.[2]

Ayrıca bakınız

Notlar

  1. ^ MacOS'un bir tuhaflığı pl standart girişi manuel olarak yazıp sonlandırırsa stdout'a başıboş bir "D" karakteri koymasıdır. ^ D.
  2. ^ açıklama Obj-C Vakfı'nda NSData bir sözlük temsili döndürdüğü için hatalı. Açık kaynak Swift Foundation'ın böyle bir sorunu yok.

Referanslar

  1. ^ "NSString sınıf başvurusu: propertyListFromStringsFileFormat". GNUstep. Alındı 17 Şubat 2020.
  2. ^ a b "Paket listesi". godoc.org. Unmarshal bir OpenStep özellik listesiyle karşılaştığında, rahat bir ayrıştırma moduna girecektir: OpenStep özellik listeleri, dizeler olarak yalnızca düz eski verileri depolayabilir, bu nedenle tam sayı, kayan nokta, boole ve tarih değerlerini gerekli olan her yerde kurtarmaya çalışacağız.
  3. ^ "Eski Tarz ASCII Mülk Listeleri". Apple Developer (Mülk Listesi Programlama Kılavuzu). Alındı 16 Şubat 2020.
  4. ^ a b varsayılanlar (1) – Linux Genel Komutlar Manuel
  5. ^ Frith-Macdonald Richard (2004). "NSPropertyListSerialization sınıfı belgeleri". GNUstep.
  6. ^ "Mülk Listeleri". GNUstepWiki.
  7. ^ "NSSerialization belgeleri". GNUstep. kaynak kodu
  8. ^ "Türler ve Sabitler: NSPropertyListFormat". gnustep.org.
  9. ^ pldes (1) – Linux Genel Komutlar Manuel
  10. ^ "appleexaminer.com:" PLIST dosyaları"". Arşivlenen orijinal 19 Şubat 2014. Alındı 27 Şubat 2014.
  11. ^ a b PlistBuddy (8) – Darwin ve Mac os işletim sistemi Sistem Yöneticisinin Manuel
  12. ^ a b plutil (1) – Darwin ve Mac os işletim sistemi Genel Komutlar Manuel
  13. ^ pl (1) – Darwin ve Mac os işletim sistemi Genel Komutlar Manuel
  14. ^ "AppleScript: Özellik Listeleri". 24 Nisan 2009. Arşivlenen orijinal 24 Nisan 2009.
  15. ^ a b "CF / CFBinaryPList.c". Apple Açık Kaynak. Alındı 6 Ocak, 2020.
  16. ^ plist (5) – Darwin ve Mac os işletim sistemi Dosya formatları Manuel
  17. ^ a b Caithness, Alex (4 Nisan 2012). "Geek post: NSKeyedArchiver dosyaları - bunlar nedir ve bunları nasıl kullanabilirim?". Dijital Araştırma. Liste 2'deki CF $ UID veri türü, tek bir anahtarın ("CF $ UID") ve ardından bir tamsayı sayısının geldiği bir sözlüktür (bu düzen, özellik listesi XML'de temsil edildiğinde göreceğiniz şeydir; ham ikili format "UID" veri türü, sözlük yapısını gerektirmeyen ayrı bir varlıktır). Bu veri türleri, "$ nesneler" dizisindeki başka bir varlığa bir başvuruyu temsil eder. CF $ UID numarası, dizinin konumunu verir.
  18. ^ "NSCoder.html". OpenStep özellikleri.
  19. ^ a b CCLForensics Group (15 Ocak 2020). "cclgroupltd / ccl-bplist". GitHub.
  20. ^ "apple / swift-corelibs-vakıf: NSKeyedArchiver.swift". GitHub. testler
  21. ^ "NSKeyedArchiver belgeleri". GNUstep belgeleri. Alındı 23 Şubat 2020. kaynak kodu
  22. ^ "iTunes Yedekleme - iPhone Wiki". www.theiphonewiki.com.
  23. ^ "Apple Safari web tarayıcısı, ayarlarını Windows'ta nasıl saklıyor?". Süper Kullanıcı.
  24. ^ "GitHub - microsoft / NSPlist: NSPlist". 3 Mayıs 2019 - GitHub aracılığıyla.
  25. ^ Jason R. Thorpe. "proplib - özellik kapsayıcı nesne kitaplığı". NetBSD. Lay özeti.
  26. ^ Jason R. Thorpe. "proplib - özellik kapsayıcı nesne kitaplığı". DragonFly BSD. Lay özeti.
  27. ^ "facebook / xcbuild / Kitaplıklar / plist". GitHub. Alındı 17 Şubat 2020.
  28. ^ "plistlib - Mac OS X .plist dosyalarını oluşturun ve ayrıştırın". Python 3 belgeleri. Alındı 6 Ocak, 2020.
  29. ^ "corpnewt / ProperTree: Python ile yazılmış çapraz platform GUI plist editörü". GitHub. 17 Şubat 2020. Alındı 17 Şubat 2020.

Dış bağlantılar