Aide sur un bug NSBundle (loaded) was

Bonsoir,


 

J'ai le bug suivant dans mon application.


Warning: NSBundle NSBundle </System/Library/PrivateFrameworks/CorePDF.framework> (loaded) was released too many times. For compatibility, it will not be deallocated, but this may change in the future. Set a breakpoint on __NSBundleOverreleased() to debug


 

 

Elle est apparue (il me semble) quand j'ai ajouté une deuxième class qui utilise les PDF. Avant ça, je n'avais qu'une seule classe qui utilisée les PDF (et donc un seul #import <Quartz/Quartz.h>

 

 

J'ai essayé de mettre  #import <Quartz/Quartz/h> dans le .pch au lieu de le mettre dans chacune des deux classes, mais ça ne change rien. 

 

L'erreur n'est pas systématique, seulement 50% du temps. Supprimer le DerivedData ne règle pas le problème.

 

J'ai mis un  breakpoint, comme conseillé mais je ne sais pas trop quoi faire de là  où ça m'amène.

 


Foundation`__NSBundleOverreleased:

0x7fff922031a5:  pushq  %rbp

0x7fff922031a6:  movq   %rsp, %rbp

0x7fff922031a9:  testq  %rdi, %rdi

0x7fff922031ac:  je     0x7fff922031b0            ; __NSBundleOverreleased + 11

0x7fff922031ae:  popq   %rbp

0x7fff922031af:  ret    

0x7fff922031b0:  leaq   -337650111(%rip), %rdi    ; @' '

0x7fff922031b7:  xorb   %al, %al

0x7fff922031b9:  popq   %rbp

0x7fff922031ba:  jmpq   0x7fff9217bc04            ; NSLog


 

 

Dans le stack:

 

Réponses

  • Sample code ?


  • En fait, le bug survient au lancement de l'application, ce qui me laisse penser que c'est un problème d'architecture.


     


    Mais sinon, voilà  le code de la classe incriminée



    @interface MyHelperViewsManager : NSViewController
    @property (nonatomic, strong, readonly)NSView * help ;
    @end

    et 



    @interface MyHelperViewsManager ()

    @property (nonatomic, strong, readwrite)NSView * help ;

    @end




    @implementation MyHelperViewsManager


    + (instancetype)sharedInstance {
    static id _sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _sharedInstance = [[MyHelperViewsManager alloc] init];
    });

    return _sharedInstance;
    }


    - (id)init
    {
    self = [super initWithNibName:@MyHelperViewsManager bundle:nil];
    if (self)
    {
    [self initializeTheViews] ;
    }
    return self;
    }





    - (void)awakeFromNib
    {
    [super awakeFromNib] ;
    //
    }



    - (void)initializeTheViews
    {
    NSString *path= [[NSBundle mainBundle] pathForResource:@help ofType:@pdf];
    NSURL *urlPDF = [NSURL fileURLWithPath:path] ;

    PDFDocument * myPDFDocument = [[PDFDocument alloc] initWithURL:urlPDF] ;

    PDFView *myPDFView = [[PDFView alloc] init] ;
    myPDFView.document = myPDFDocument ;

    PDFPage * firstPage = [myPDFDocument pageAtIndex:0] ;
    NSRect myBounds = [firstPage boundsForBox:kPDFDisplayBoxMediaBox] ;

    NSRect myNewBounds = NSMakeRect(0, 0, myBounds.size.width*myPDFToViewFactor, [self niceHeightFrom:myBounds.size.height*myPDFToViewFactor+5]) ;

    myPDFView.frame = myNewBounds ;
    myPDFView.autoScales = YES ;

    _help = myPDFView ;
    }


    - (float)niceHeightFrom:(float)initialHeight
    {
    if (initialHeight < maxHeightView)
    {
    return initialHeight ;
    }
    else
    {
    return fmin(maxHeightView, initialHeight*80/100) ;
    }
    }

    @end

  • Non, vu le problème, il faut que tu fasse un vrai un sample code. Un projet Xcode de démo avec tous les fichiers nécessaire et qui plante comme ton vrai projet.


  • Ah OK, j'avais pas compris. Tu veux dire une sorte d'exemple minimal qui reproduit le problème.


    Je croyais que tu voulais voir du code.


  • CéroceCéroce Membre, Modérateur

    ça permet de cerner le problème, et puis, tu vas sûrement en avoir besoin pour envoyer un rapport de bug à  Apple...


  • Oui... Je vous avouerai que j'espère que ce bug va disparaà®tre comme il est apparu. Je n'ai pas trop le temps de faire un sample code. Le bug ne fait pas planter l'application. 


     


    En gros, je ne suis pas dans une situation désespérée et je postais ce message au cas où le message d'erreur aurait mis la puce à  l'oreille de quelqu'un !


     


    Merci en tout cas !


Connectez-vous ou Inscrivez-vous pour répondre.