Automatisk reference Counting

I Objective-C og Swift programmering, Automatisk reference Counting er en hukommelse ledelse ekstraudstyr, hvor byrden af ​​at holde styr på et objekts henvisning tæller løftes fra programmør til compileren. I traditionel Objective-C, ville programmøren sende og meddelelser til objekter med henblik på at markere objekter til deallokering eller for at undgå deallokering. Under ARC, compileren gør dette automatisk ved at undersøge kildekoden og derefter tilføje og beskeder i kompileret kode.

ARC afviger fra Cocoa s affaldsindsamling i, at der ikke er nogen baggrundsproces gør deallokering af objekter. I modsætning til garbage collection, er ARC ikke håndtere automatisk reference- cykler; Det er op til programmøren at bryde cykler under anvendelse af svage referencer.

Apple Inc. leverede en fuldt udstyret version af ARC i 2011 for applikationsudvikling på sine Mac OS X Lion og iOS 5 operativsystemer. Før dette blev en begrænset version af ARC understøttes i Xcode 4.2 eller nyere, Mac OS X 10.6 "Snow Leopard" eller senere, og iOS 4.0 eller nyere. Mac OS X 10.7 "Lion" eller iOS 5 anbefales at bruge alle de funktioner, herunder svag henvisning støtte. Apples Swift sprog, der blev indført i 2014, bruger ARC for hukommelse ledelse.

Regler ved brug af ARC i Objective C

Følgende regler håndhæves af compileren, når ARC er aktiveret:

  • Du kan ikke kalde, ,,, eller.
  • Du kan ikke kaste direkte mellem og. Dette omfatter støbning mellem Foundation objekter og Core Foundation objekter.
  • Du kan ikke bruge objekter.
  • Du kan ikke kalde de funktioner og
  • Du kan ikke bruge objekt pejlemærker i C strukturer
  • Du kan ikke bruge memory zoner
  • At samarbejde ordentligt med ikke-ARC kode, du også kan ikke oprette en metode eller en erklæret ejendom, der begynder med "kopi".

Ejendom Erklæringer

ARC introducerer nogle nye ejendom erklæring attributter, nogle af dem at udskifte de gamle attributter.

  • ^ ARCLite er ARC, men uden nulstilling svage referencer.

Nulstilling Svage Referencer

Nulstilling svage referencer er en funktion i Objective-C ARC, der automatisk rydder svag-reference- lokale variable, instansvariabler og erklæret egenskaber umiddelbart før det objekt, der pegede på begynder deallokering. Dette sikrer, at pointeren går til enten et gyldigt objekt eller og undgår hængende pointere. Forud for indførelsen af ​​denne funktion, "svage referencer" henvises til referencer, der ikke bevarer, men blev ikke sat til, når det objekt, de pegede på var deallokeret, hvilket muligvis kan føre til en dinglende pointer. Programmøren havde typisk at sikre, at når et objekt bliver deallokeret at indstille alle mulige svage referencer til den til manuelt. Nulstilling svage referencer overflødiggør behovet for at gøre dette.

Nulstilling svage referencer er angivet ved hjælp af opgivne attribut eller ved hjælp af variable attribut.

Nulstillingsindretninger svage referencer er kun tilgængelige i Mac OS X 10.7 "Lion" eller senere og iOS 5 eller nyere, fordi de kræver yderligere støtte fra Mål-C runtime. Men nogle OS X-klasser i øjeblikket ikke understøtter svage referencer. Kode, der bruger ARC, men skal understøtte versioner af OS ældre end de ovennævnte kan ikke bruge nulstilling svage referencer, og derfor skal bruge svage referencer. Der eksisterer en tredjepart bibliotek kaldet PLWeakCompatibility der tillader en at bruge nulstilling svage referencer selv på disse ældre OS-versioner.

Konvertering til Arc

Xcode 4.2 eller nyere tilvejebringer en måde at konvertere koden til ARC. Pr Xcode 4.5, findes det ved at vælge Rediger & gt; Refactor & gt; Konverter til Objective-C ARC ... Selvom Xcode automatisk vil konvertere de fleste kode, kan noget kode skal konverteres manuelt. Xcode vil informere bygherren, når der opstår mere komplekse use cases, såsom når en variabel er erklæret inde i en autorelease pool og anvendes uden det, eller når to objekter skal være gratis bro med særlige afstøbninger.

ARC i Swift

Swift bruger ARC til at styre hukommelsen. For at gøre det muligt for programmøren at undgå kraftige reference- cyklusser opstår, Swift giver de svage og unowned søgeord. Svage henvisninger skal være valgfrie variabler, da de kan ændre sig og blive lig nul.

En lukning i en klasse kan også oprette en stærk henvisning cyklus ved at opfange selv referencer. Programmøren kan angive, hvilke selvstændige referencer skal behandles som svag eller unowned hjælp af en capture listen.

  0   0
Forrige artikel Befolkningen i Kau
Næste artikel Bad Hofgastein

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha