//

Object uit NSArray tweemaal gebruiken

Object uit NSArray tweemaal gebruiken discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Ik hoop dat iemand mij kan helpen met het volgende probleem. Ik heb een array waarin ik allerlei images opsla. Nu wil ik elke image ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Berichten van vandaag

Reageren

 

Discussietools Weergave
  #1  
Oud 12-08-10, 11:06
Niels2678 Niels2678 is offline
• iOS 4.0.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jun 2009
Locatie: De Lier - Westland
Berichten: 17
Stuur een bericht via MSN naar Niels2678
Exclamation Object uit NSArray tweemaal gebruiken

Ik hoop dat iemand mij kan helpen met het volgende probleem.

Ik heb een array waarin ik allerlei images opsla. Nu wil ik elke image in die array 2 x gebruiken. Wat er dan gebeurd is dat de eerste image verdwijnt als ik de tweede image plaats.

Dit wordt volgens mij veroorzaakt omdat ik beide keer naar de zelfde referentie in het geheugen wijs en de image dus niet op 2 plekken te gelijk gezet kan worden. Maar wanneer ik copy gebruik crasht de app en krijg ik de melding dat ik method copyWithZone niet te gebruiken is.

Ook dat heb ik opgezocht en dat schijnt dus te komen omdat elke image in die array een custom class is.

Iemand een idee hoe ik dit op kan lossen?
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 12-08-10, 11:28
TUX2K TUX2K is offline
• iOS 14.0
• 8.1.2
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2008
Locatie: Amsterdam
Berichten: 174
Standaard

Klinkt vreemt, maar als ik het goed begrijp wil je dus een en het zelfde plaatje twee keer toevoegen aan een array.
Dit zou mijn inziens gewoon moeten kunnen, maar misschien dat NSArray een pointer check doet.

Zou je code eens kunnen posten, dan wordt het na bouwen en test een stukje makkelijker. Misschien is er wel een weg om heen.
  #3  
Oud 12-08-10, 11:33
Niels2678 Niels2678 is offline
• iOS 4.0.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jun 2009
Locatie: De Lier - Westland
Berichten: 17
Stuur een bericht via MSN naar Niels2678
Standaard

Citaat:
Oorspronkelijk geplaatst door TUX2K Bekijk bericht
Klinkt vreemt, maar als ik het goed begrijp wil je dus een en het zelfde plaatje twee keer toevoegen aan een array.
Dit zou mijn inziens gewoon moeten kunnen, maar misschien dat NSArray een pointer check doet.

Zou je code eens kunnen posten, dan wordt het na bouwen en test een stukje makkelijker. Misschien is er wel een weg om heen.
Nee ik wil juist een plaatje 2 x uit een array ophalen en plaatsen op een view. De afbeeldingen zitten al goed in de array.

Hieronder het stukje code waar het over gaat:

NSArray *thumbs = [arrayThumbnails objectAtIndex:indexPath.section];

if([[thumbs objectAtIndex:indexPath.row] isKindOfClass:[AsyncImageView class]])
{
AsyncImageView *imaget = (AsyncImageView *)[[thumbs objectAtIndex:indexPath.row] copy];

[self showDetailViewWithInfonEvent withImage:imaget];
}
else
{
[self showDetailViewWithInfonEvent withImage:nil];
}

Ik hoop dat dit een stuk ophelderd!
  #4  
Oud 12-08-10, 11:38
TUX2K TUX2K is offline
• iOS 14.0
• 8.1.2
• Besturingssysteem: Mac OS X
 
Geregistreerd: Oct 2008
Locatie: Amsterdam
Berichten: 174
Standaard

Je hoeft geen copy te gebruiken, ja kan direct the image gebruiken.
Ik heb het idee dat je ergens de array op ruimt en de image released waardoor deze wordt opgeruimt, of dat je de pointer overschrijft met de twee image als je die gaat displayen.

Je code ziet er goed uit, in de functie showDetailViewWithInfo withImage, retain je daar de image (of in de viewcontroller/view die daar dan weer aan hangt?)
  #5  
Oud 12-08-10, 13:09
Whacko Whacko is offline
• iOS 7.1.2
• 5.1.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jan 2009
Berichten: 484
Standaard

TUX2K als hij een retain vergeten is zou het image gewoon te zien moeten zijn. Hij wordt pas opgeruimd als de retaincount op 0 staat. stel het wordt ergens vergeten en de retaincount staat op 1, kan je hem nog steeds op 10 plekken gebruiken, alleen weet het systeem niet waar hij allemaal gebruikt wordt.

Lijkt mij eerder dat er iets misgaat bij een draw functie ofzo die de vorige image overschrijft met een lege image of iets in die richting.

Misschien is het mogelijk wat meer code te plaatsen?
__________________
Software Engineer
iPhone Developer
  #6  
Oud 12-08-10, 13:39
Niels2678 Niels2678 is offline
• iOS 4.0.1
• Besturingssysteem: Mac OS X
 
Geregistreerd: Jun 2009
Locatie: De Lier - Westland
Berichten: 17
Stuur een bericht via MSN naar Niels2678
Standaard

Ik zal even de code posten die hiermee te maken heeft:

Bij de initialisatie van de app tel ik alle table cell's en groepeer ze in categorieën en zet hier allemaal lege objecten voor in de plaats in een mutable array. (arrayThumbnails)

Wanneer de data wordt geladen van elke cell en deze cell een afbeelding heeft, plaats ik deze afbeelding in die array door het lege object te vervangen.(uiteraard op de goede plek)

AsyncImageView *asyncImage = [[AsyncImageView alloc] initWithFrame:CGRectMake(12.0f, 13.0f, 72.0f, 72.0f)];
asyncImage.tag = 500;
[asyncImage loadImageFromURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", onEvent.event_thumb]]];
[cell.contentView addSubview:asyncImage];

lijstItems = [arrayThumbnails objectAtIndex:indexPath.section];
[lijstItems replaceObjectAtIndex:indexPath.row withObject:asyncImage];
[arrayThumbnails replaceObjectAtIndex:indexPath.section withObject:lijstItems];

[asyncImage release]

Zo wordt dus mijn array opgevuld met afbeeldingen. (Zorgt voor het soepeler scrollen)

Daarna wil ik dus de image laten zien in de cell, dat doe ik alsvolgt:

lijstItems = [arrayThumbnails objectAtIndex:indexPath.section];
[cell.contentView addSubview:[lijstItems objectAtIndex:indexPath.row]];

Maar nu komt het volgende het 'probleem', als er nu een cell wordt geselecteerd dan komt er een nieuwe view tevoorschijn (met meer informatie dan in die cell) maar wil ik weer datzelfde plaatje daarin laten zien.
Maar als ik dan het plaatje opdezelfde manier ophaal, verdwijnt het plaatje dat in de cell stond.

Ik hoop dat ik het nu een beetje duidelijk heb kunnen maken.
Misschien dat jullie zien wat ik fout doe?
  #7  
Oud 15-08-10, 10:45
umbra989 umbra989 is offline
• iOS 4.0.1
• Besturingssysteem: Windows
 
Geregistreerd: Sep 2008
Berichten: 3
Standaard

Er valt me wel op dat in de code gebruik wordt gemaakt van NSArray en in de tekst je spreekt van een mutable array maar volgens mijn zit daar het probleem niet. Het lijkt er inderdaad op dat er sprake is van een memorymanagementvraagstuk, zeker omdat je het plaatje in een nieuwe view gebruikt. Maak anders een property aan op de subview van het type array waar je de thumbs array aan toewijst. Door met synthesize de property aan te maken is het memorymgt automatisch geregeld.
Reageren

Labels
array, image, probleem



Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Object in koptelefoonaansluiting Sluuz iPhone algemeen 6 15-05-12 21:57
Iphone 4 uit VS te gebruiken in NL? hans-wouter iPhone algemeen 1 19-08-10 22:20
Op zoek naar bepaald UI object Coppes Ontwikkelen voor iOS 2 07-01-10 15:48

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 00:32.