, hvad er exc_bad_access, og hvordan man ser på det,,,,, 26,,,,,,,,, 6,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' ikke glip af, på et eller andet, du vil løbe ind i en ulykke, der forårsages af exc_bad_access,.i denne hurtige tips, vil du lære, hvad exc_bad_access er, og hvad det er, der er forårsaget af.jeg vil også give dig et par tips til at ordne insekter, der er forårsaget af exc_bad_access.,, 1.hvad er exc_bad_access?,, når du forstå årsagen til exc_bad_access, kan du bedre forstå de kryptiske navn.der er en enkel forklaring og en mere teknisk forklaring.lad os starte med den enkle forklaring.,, at holde det enkelt, når du møder exc_bad_access, betyder det, at du sender et budskab til en genstand, der allerede er blevet løsladt.det er den mest almindelige scenario, men der er undtagelser, som vi vil komme ind på om et øjeblik.,, hvad det egentlig betyder, den tekniske forklaring er lidt mere indviklet.i c - og objective-c, du altid beskæftiger os med , tips.det er ikke mere end en variabel, som opbevarer hukommelse adresse på en anden variabel.når du sender en besked til en genstand, der peger på, at målet pilen, du sender det budskab til brug for, dereferenced,.det betyder, at du tager hukommelse adresse pilen peger på og få adgang til værdien af den blok af hukommelse.,, når blokken af minde, ikke længere er kortlagt i din ansøgning, eller sagt på en anden måde, at blok af hukommelse er ikke vant til, hvad tror du det er brugt, er det ikke længere muligt at adgang den del af hukommelsen.når dette sker, kerne sender en undtagelse (ud), hvilket tyder på, at deres anvendelse ikke kan få adgang til at blokere hukommelse (, dårlig adgang). kort sagt, når du løber ind i exc_bad_access, betyder det, at du prøver at sende et budskab til en blok af minde, som ikke kan udføre budskabet.,,, men i nogle tilfælde exc_bad_access er forårsaget af en korrupt pointer.når din ansøgning forsøg på at dereference en korrupt pointer, en undtagelse er smidt af kernen.,,, 2.debugging - exc_bad_access, debugging - exc_bad_access kan være svære og frustrerende.men nu, hvor exc_bad_access ikke længere er en gåde for dig, det skal være mindre skræmmende.,, den første ting, du skal vide, at deres anvendelse ikke nødvendigvis styrt nu den blok af hukommelse er ikke længere tilgængelige af din ansøgning.det er, hvad der gør ofte debugging - exc_bad_access så svært.,, det samme gælder for korrupte tips.din ansøgning vil ikke sove, fordi det var korrupt.det vil ikke sove, hvis du består en korrupt pointer rundt i din ansøgning.når din ansøgning forsøg på at dereference korrupte fingerpeg, men ting går galt.,, zombier, mens zombier har vundet større udbredelse i de sidste par år, de har været her i xcode i mere end et årti.navnet , zombie, lyder en smule dramatisk, men det er faktisk et godt navn til en funktion, der vil hjælpe os, ser exc_bad_access.lad mig forklare, hvordan det fungerer, i xcode, kan du sætte zombie objekter, hvilket betyder, deallocated genstande holdes rundt som zombier.sagt på en anden måde, deallocated genstande holdes i live for fejlretning.der er ingen magi indblandet.hvis du sender en besked til en zombie objekt, deres anvendelse stadig vil sove som følge af exc_bad_access.,,, hvorfor er det nyttigt?hvad gør exc_bad_access vanskeligt at ser er, at du ikke ved, hvad formål din ansøgning prøvede at få adgang til.zombie - objekter, løse dette problem i mange tilfælde.ved at holde deallocated objekter i live, xcode kan fortælle dig, hvad, du prøvede at få adgang til, at finde frem til det problem, at meget lettere.,, således at zombier i xcode er meget let.bemærk, at dette kan variere afhængigt af den udgave af xcode, at du bruger.følgende fremgangsmåde anvendes til xcode 6 og 7.klik på den aktive ordning i den øverste venstre og vælge , redigere ordning,.,, udvælge , løb, til venstre og åbne , diagnostik , tab på toppen.for at gøre det muligt for zombie objekter, afkrydses den afkrydsningsfelt mærket , muliggøre zombie objekter.,,,,,,, hvis du løber ind i exc_bad_access, produktionen i xcode er konsol vil give dig en bedre idé om, hvor man skal begynde med at lede.tag et kig på følgende eksempel produktion.,, 2015-08-12 06:31: 55.501 fejlcheck [2371:1379247] - [childviewcontroller respondstoselector:] budskab til deallocated instans 0x17579780, i ovenstående eksempel, xcode fortæller os, at et budskab om, respondstoselector:, blev sendt til en zombie objekt.men zombie - objekt er ikke længere et tilfælde af , childviewcontroller, klasse.den blok af minde, som tidligere blev tildelt, childviewcontroller, f.eks. ikke længere er kortlagt i din ansøgning.dette vil give dem en god idé om, hvad årsagen til problemet er, desværre, zombie objekter, vil ikke være i stand til at redde din dag for hver ulykke forårsaget af exc_bad_access.hvis zombie genstande ikke gør det, så er det tid til en grundig analyse.,, analysere, hvis zombie genstande ikke løse dit problem så årsagen kan være mindre trivielt.i så fald, er du nødt til at tage et nærmere kig på den kode, der er blevet henrettet, når din ansøgning styrter ned.dette kan være besværlige og tidskrævende, at hjælpe dig med at finde problemer i din kode base, kunne man spørge, xcode at analysere deres kode til at hjælpe dig med at finde problematiske områder.bemærk, at xcode analyserer deres projekt, hvilket betyder, at det vil påpege alle potentielle problem, den har, for at fortælle xcode at analysere deres projekt, vælge , analysere, fra xcode er , produkt, menu eller pressen, , shift-command-b,.det vil tage xcode nogle øjeblikke, men når den er færdig, du bør se en liste over spørgsmål i , navigatør, til venstre.problemer, der findes i analysen er fremhævet i blåt.,,,,,, når du klikker på et spørgsmål, xcode tager dig til blok af kode, der kræver din opmærksomhed.bemærk, at xcode kun er et forslag.i nogle tilfælde er det muligt, at spørgsmålet ikke er relevant og ikke skal repareres.,,,,,, hvis du ikke kan finde den sygdom, der er forårsaget exc_bad_access, så det er vigtigt nøje at undersøge alle spørgsmål xcode fandt i den analyse af projektet.,, konklusion, exc_bad_access er en fælles frustration blandt udviklere og det er der noget, der er forbundet med manuel hukommelse forvaltning.spørgsmål i forbindelse med hukommelse forvaltning er blevet mindre hyppige siden indførelsen af arc (automatisk henvisning tæller), men de er ikke forsvundet.
hvad er exc_bad_access, og hvordan man ser på det
Previous:en introduktion til kvarts 2d