Speicherproblem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Speicherproblem

    Hey,

    ich hab bei meiner App irgendein Speicherproblem und ich vermute das liegt an meinem CollectionView bzw. deren Inhalt.

    Thead dazu :Deallocated ViewController

    Hier meine aktuelle Methode

    Quellcode

    1. -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    2. //CELL IDENTIFIER
    3. static NSString *identifier = @"DetailCollectionCell";
    4. //CREATE DetailCollectionCell
    5. DetailCollectionCell *cell = (DetailCollectionCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
    6. //SET RECIPE TO CURRENT RECIPE PROPERTY
    7. _currentRecipe = currentRecipe;
    8. //CREATE DetailContentViewController WITH IDENTIFIER
    9. DetailContentViewController *theDetailContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailContentViewController"];
    10. //ADD DetailContentViewController TO CELL
    11. [cell setDetailContentViewController:theDetailContentViewController];
    12. //SET DetailContentViewController ATTRIBUTES
    13. [theDetailContentViewController.view setFrame:CGRectMake(0,0, cell.frame.size.width, cell.frame.size.height)];
    14. [theDetailContentViewController.theScrollView setFrame:CGRectMake(0,0, cell.frame.size.width, cell.frame.size.height)];
    15. [theDetailContentViewController fillScrollView];
    16. NSString *imageName = currentRecipe.titlePictureFilename;
    17. //SET IMAGE WITH CACHING
    18. UIImage *image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:imageName];
    19. if (image) {
    20. [theDetailContentViewController.titleImage setImage:image];
    21. }else{
    22. [theDetailContentViewController.titleImage setImageWithURL:[KSAppDelegate getURLFromFilename:imageName]];
    23. }
    24. //ADD DetailContentViewControllers VIEW TO CELL
    25. [cell addSubview:theDetailContentViewController.view];
    26. //RETURN CELL
    27. return cell;
    28. }
    Alles anzeigen


    Wenn ich den CollectionView durchswipe sieht mein Allocation Template bei Instruments wie folgt aus(siehe Anhänge)
    Hat einer eine Ahnung woran das liegen könnte?
  • MCDan schrieb:

    Gibst Du im dealloc von DetailCollectionCell den DetailContentViewController wieder frei oder ist dies mit ARC nicht mehr erforderlich?

    Ja den geb ich wieder frei

    Quellcode

    1. #import "DetailCollectionCell.h"
    2. @implementation DetailCollectionCell
    3. - (id)initWithFrame:(CGRect)frame
    4. {
    5. self = [super initWithFrame:frame];
    6. if (self) {
    7. // Initialization code
    8. }
    9. return self;
    10. }
    11. /*
    12. // Only override drawRect: if you perform custom drawing.
    13. // An empty implementation adversely affects performance during animation.
    14. - (void)drawRect:(CGRect)rect
    15. {
    16. // Drawing code
    17. }
    18. */
    19. -(void)dealloc{
    20. _detailContentViewController = nil;
    21. }
    Alles anzeigen
  • Michael schrieb:

    TeamNoX schrieb:

    Und was genau ist dann der Unterstrich? Bzw wofür verwendet man den. Weil es ist ja bestimmt nicht die Instanzvariable oder?

    Doch, es ist die Instanzvariable. Der Compiler legt die für Dich an. Irgendwo hin müssen die Properties ja gespeichert werden.

    Michael



    Achso? Früher griff man doch von einer property immer ohne alles auf die instanzvariable zu. Das geht ja heute nicht mehr.

    Also ich hab es jetzt mal geändert gehabt auf self und es kam keine Veränderung
  • TeamNoX schrieb:

    Achso? Früher griff man doch von einer property immer ohne alles auf die instanzvariable zu. Das geht ja heute nicht mehr.

    Nein, nur wer die Speicherverwaltung nicht verstanden hat, hat das gemacht.

    TeamNoX schrieb:

    Also ich hab es jetzt mal geändert gehabt auf self und es kam keine Veränderung

    War durch eingeschaltetes ARC auch nichts anderes zu erwarten. Lass doch mal den Analyser (cmd-shift-B) drüber laufen. Vielleicht findet der ja schon was.

    Michael
  • Michael schrieb:


    War durch eingeschaltetes ARC auch nichts anderes zu erwarten. Lass doch mal den Analyser (cmd-shift-B) drüber laufen. Vielleicht findet der ja schon was.
    Michael


    Hat rein GAR nichts gefunden. Also nicht mal woanders. Keine Blauer Marker.

    Ich kann mir vorstellen das dies mit den Bildern zusammen hängt die im DetailContentViewController hinzugefügt werden. Aber was mich halt wundert ist, das alle Zellen die er erstellt hat laut Instruments ja nicht freigegeben werden :/

    Bzw. keine Ahnung was dieses CGRaster Data ist aber das macht den größten Speicherbedarf aus.(Siehe Screenshot)
  • Die brauch ich gar nicht simulieren weil die Methode

    - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application eh aufegerufen wird wenn ich beim collectionview rumswipe.

    Ich glaub das liegt echt daran weil ich in dem ScrollView-> DetailContentViewController ungefähr 6 Hochauflösende Bilder mit rund 400kb pro Bild lade. Und damit kommt er irgendwie nicht zurecht :/ oder kann das nicht das Problem sein?