Rychlý rozdíl mezi strukturou a třídou.

Každý rychlý vývojář, který má alespoň 6 měsíců zkušeností, ví o strukturách, enumu a třídě. Každý je používá pravidelně, aniž by věděl, co, kdy a kde je použít. Snažím se to zjednodušit.

zdroj obrázku: stocksnap

Typy hodnot a typy odkazů

Info: TreeHouse, Apple doc.

Pokud jde o výčty, struktury a třídy, je důležité znát rozdíl mezi typy hodnot a dat. Když vytvoříte číslo nebo strukturu, jedná se o typ hodnoty a třída je typ odkazu.

  • Typ hodnoty: Struktura, Výčet
  • Typ odkazu: Třída

Když kolem aplikace předáváte objekt třídy, ve skutečnosti se k němu připojujete, takže různé části programu mohou sdílet a upravovat váš objekt. Když kolem programu přejdete šipkou [nebo výčtem], budete mít kopii této struktury. Změny ve strukturách tedy nemohou být vyměněny.

Jednou z důležitých výhod typů hodnot je to, že jsou bezpečné v podprocesu, což nevyžaduje žádnou synchronizaci.
Přečtěte si můj článek o typu hodnoty vs. typu odkazu a dozvíte se více o typech hodnot a typech odkazů.
Okamžitě si přečtěte můj článek o Enumech a získejte více informací o Enumech.
Instance třídy je obecně známa jako objekt. Je lepší používat termín Instance, protože se zabýváme také strumem a enumem.

Třída

V OOP je třída plánem vytváření samostatných kopií.

Třída je plán vytváření objektů (parametry nebo atributy členů) a chování (členské funkce nebo metody) pro vytváření objektů (struktura konkrétních dat).

Třídu definujeme pomocí klíčového slova.

Struktura

Struktura je podobná třídě, pokud jde o označování a vytváření vzorků.

Strukturu definujeme pomocí strukturálního klíčového slova.

Jaké jsou společné faktory mezi strukturou a třídou?

  • Definujte vlastnosti pro uložení hodnot
  • Definujte způsoby, jak zajistit funkčnost
  • Pomocí skriptů definujte skripty, které jim umožňují přístup k jejich hodnotám
  • Definujte spouštění a upravte stav spouštění
  • Kromě obvyklé implementace bude rozšířena o rozšíření jejich funkčnosti
  • Přizpůsobte se protokolům a poskytněte standardní funkce konkrétního typu

Třídy mají další funkce, které nejsou zahrnuty:

  • Dědičnost umožňuje jedné třídě zdědit vlastnosti druhé. Strukturu ani výčet nelze zdědit. Mohou však protokoly schválit.
  • Typ Casting umožňuje zkontrolovat a interpretovat instanci dělnické třídy.
  • Deinitátor umožňuje instanci třídy uvolnit zdroje, které jí byly přiřazeny.
  • Referenční výpočet umožňuje více než jednu třídu odkazů.
Protože třída podporuje typ odkazu a dědičnost, zvyšuje se složitost. Ve většině případů by struktura měla být dostatečná, aby vyhovovala vašim potřebám. Třídu používejte podle potřeby nebo podle potřeby.

Syntaxe

Třídu definujeme pomocí klíčového slova class a klíčového slova struct. Syntaxe je stejná pro strukturu i třídu.

Členský iniciátor pro typy struktur

Všechny struktury mají automaticky generovaného odkazujícího člena, který můžete použít k iniciaci vlastností členství nových instancí struktury. Počáteční hodnoty můžete předat inicializátoru pro vlastnosti nového vzorku:

přesnost struktury {
var width = 0
var výška = 0
}
access vga = Rozlišení (šířka: 640, výška: 480)

Na rozdíl od provedení, kopie třídy nedostávají standardní inicializační standard.

Poznámka: Pokud je proměnná struktury soukromá, počáteční jméno člena je soukromé. v tomto případě musíme poskytnout spouštěcí program založený na komunitě.

Kdy a kde by se měly používat?

Cíl - V C jsou všechno podtřídy z NSObject. NSString, NSArray a další jsou všechny referenční typy. Na druhé straně existují bohaté typy hodnot. String, Array, Glossary atd. Je rychlá struktura, což je typ hodnoty. Použití typu hodnoty má mnoho výhod než typ dat.

Přečtěte si můj článek o typu hodnoty vs. typu odkazu a dozvíte se více o typech hodnot a typech odkazů.

Myslím, že potřebujeme strukturu použít, protože pokud se struktura stane příliš velkou nebo vyžaduje dědičnost, mohou významně snížit složitost a pokles tříd.

  • Struktury jsou mnohem bezpečnější a bezchybnější, zejména v mnohostranných prostředích. Rychlé typy hodnot jsou zálohovány. Každé vlákno má v procesu svou vlastní hodnotu, takže žádná jiná hodnota nemá přímý přístup k vašemu typu hodnoty. Tudíž neexistuje složitost podmínek závodu, zámků, zámků nebo jakékoli související synchronizace.
  • Pokud chcete datové typy, použijte třídy. Pokud chcete typy hodnot, použijte stehy.
  • Přestože obsah a výčet nepodporují dědičnost, jsou skvělé pro programování založené na protokolu. Podtřída zdědí všechny požadované a nežádoucí funkce od nadřazené třídy a jedná se o špatnou programovací praxi. Je vhodnější použít softwarový koncept založený na protokolu.
  • Třída podporuje dědictví. Třída je typ odkazu a je uložen v oblasti paměti, která z hlediska výkonu vytváří pomalejší třídu než strukturu. Na rozdíl od učebny se vytváří skleněná struktura. Takže, urychlení (a zničení) struktury je rychlejší než třída. Pokud struktura není členem distribuované třídy, která se mimo jiné shromažďuje.
  • Typy nákladů nemusí přidělit dynamickou paměť ani vypočítat data, což jsou nákladné transakce. Současně jsou typy hodnot odesílány staticky. Ty poskytují velkou výhodu, pokud jde o výkon, pokud jde o typy hodnot.

Musí číst: Výběr mezi obsahem a třídami - Apple doc

Užijte si !!

Pokud rádi čtete tento příspěvek, sdílejte jej prosím s ostatními a sdílejte nějaké informace, aby je mohli sdílet

Můžete mě sledovat za články v polovině článku. Také mě kontaktujte na LinkedIn.

Pokud máte nějaké připomínky, dotazy nebo tipy, neváhejte je zveřejnit v sekci komentářů níže!