touchesBegan EXC_BAD_ACCESS discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Heren, Ik zit met een klein "bugje" en heb even geen idee hoe ik het kan oplossen. In de volgende code: Code: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
touchesBegan EXC_BAD_ACCESS
Heren,
Ik zit met een klein "bugje" en heb even geen idee hoe ik het kan oplossen. In de volgende code: Code:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; CGPoint touchposition = [touch locationInView:self.view]; for (UIImageView *mView in imageArray) { CGRect rect = [mView frame]; } } imageArray is een NSMutableArray en init met retain. Iemand een idee waar dit aan kan liggen? Ik weet ook niet precies hoe ik meer informatie uit me debugger kan krijgen. |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
|||
|
|||
Je hebt die mView al eens ergens een release message gestuurd waardoor mView nu naar een ongeldige geheugenplaats wijst.
Deze code is wat je in essentie doet: Code:
UIImageView *imgView = [[UIImageView alloc] init]; [imgView release]; CGRect rect = [imgView frame]; // Oeps... EXC_BAD_ACCESS |
#3
|
|||
|
|||
|
#4
|
|||
|
|||
Code:
NSMutableArray *imageArrey = [[[NSMutableArray alloc] init] retain]; Ahh fout zat heel ergens anders.....had wel te maken met de ImageView en die release ik...oops. ff naar de markt en loempia halen helpt vaak met dit soort problemen. ff weglopen van je probleem. Als .NET/java progger heb je niet zoveel te doen met pointers |
#5
|
|||
|
|||
Citaat:
Code:
- (NSMutableArray *)doeIetsEnGeefArrayTerug1 { // Eerste mogelijkheid NSMutableArray *array = [[NSMutableArray alloc] init]; // doe iets return [array autorelease]; } - (NSMutableArray *)doeIetsEnGeefArrayTerug2 { // Tweede mogelijkheid NSMutableArray *array = [[[NSMutableArray alloc] init] autorelease]; // doe iets return array; } - (void)eenAndereMethode { NSMutableArray *array = [[self doeIetsEnGeefArrayTerug1] retain]; //blablabla [array release]; } De methodes 1 en 2 zijn als ik me niet vergis gelijkwaardig. Edit: was vergeten een release te doen in eenAndereMethode en een init in doeIetsEnGeefArrayTerug2 Waarom dit beter is: in jouw implementatie ga je er van uit dat er zeker en vast nog ergens een functie is die een release op die imageArray doet. In mijn oplossing maakt het niet uit of die eenAndereMethode bestaat of niet, het geheugen is steeds mooi opgekuist. Laatst gewijzigd door Matisse; 22-07-09 om 14:23. |
#6
|
|||
|
|||
Duidelijk verhaal! Thnx voor de hulp zover
Voor mijn oplossing werkt mijn versie ook, aangezien ik in het array een spelboard bewaar van een vast aantal ImageViews. in de dealloc release ik hem weer. Het is ff doorbijten, maar begin het nu leuk te vinden te proggen voor iPhone!! Als dit projectje af is, maar eens verdiepen in Core Animations. |
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
|
|