13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)
  • Q:
    Bijdrager
    e.abrahamse

    Pdf Data, +setNeedsDisplay, bounds

    Ik gebruik Xcode 3.2.3 en iPhone SDK 4.0 voor het ontwikkelen van een grafische applicatie voor de iPad.
    De broncode wil niet compileren en ik snap er geen sikkepit meer van. Heb de hele Apple documentatie al doorgespit. Zal wel een beginnersfout zijn !?!. Mijn vraagtekens zijn:

    1:<br />
    - (void)addDrawable:(id <Drawable>)d {<br />
     ** [IDEABoardView.drawables addObject:d];</p>
    <p>Category: Error: expected * before *<br />
    Expected ':' before '.' token</p>
    <p>2.<br />
    - (IBAction)touchSendPdfEmailItem:(id)sender {<br />
      // set up PDF rendering context<br />
      NSMutableData *pdfData = [NSMutableData data];<br />
      UIGraphicsBeginPDFContextToData(pdfData, IDEABoardView.bounds, nil);<br />
      UIGraphicsBeginPDFPage();</p>
    <p>Category: Error: Other</p>
    <p> Incompatible type for argument 2 of ‚UIGraphicsBeginPDFContextToData’<br />
     Accessing unknown 'bounds' class method</p>
    <p>3. Category: Warning: '*' may not respond to '*’</p>
    <p>  [IDEABoardView drawRect:IDEABoardView.bounds];<br />
    	'IDEABoardView' may not respond to '+drawRect:’ in IDEABoardViewController.m<br />
    	IDEABoardView setNeedsDisplay];<br />
     'IDEABoardView' may not respond to '+setNeedsDisplay’ in IDEABoardViewController.m

    Vreemd genoeg komt alle ellende in IDEABoardViewController samen. Wie wil en kan voor mij licht in de duisternis schijnen??

    Bijdrager
    Pieterr

    Misschien even je code snippets in een

     

    block zetten om van die smileys af te raken.:lol:

    Bijdrager
    e.abrahamse
    <br />
    Ik gebruik Xcode 3.2.3 en iPhone SDK 4.0 voor het ontwikkelen van een grafische applicatie voor de iPad.<br />
    De broncode wil niet compileren en ik snap er geen sikkepit meer van. Heb de hele Apple documentatie al doorgespit. Zal wel een beginnersfout zijn !?!. Mijn vraagtekens zijn:<br />
    1:<br />
    - (void)addDrawableid <Drawable>:wink {<br />
    ** [IDEABoardView.drawables addObject];</p>
    <p>Category: Error: expected * before *<br />
    Expected ':' before '.' token<br />
    2.<br />
    - (IBAction)touchSendPdfEmailItemid)sender {<br />
    // set up PDF rendering context<br />
    NSMutableData *pdfData = [NSMutableData data];<br />
    UIGraphicsBeginPDFContextToData(pdfData, IDEABoardView.bounds, nil);<br />
    UIGraphicsBeginPDFPage();</p>
    <p>Category: Error: Other<br />
    Incompatible type for argument 2 of ‚UIGraphicsBeginPDFContextToData’<br />
    Accessing unknown 'bounds' class method</p>
    <p>3. Category: Warning: '*' may not respond to '*’<br />
    [IDEABoardView drawRect:IDEABoardView.bounds];<br />
    'IDEABoardView' may not respond to '+drawRect:’ in IDEABoardViewController.m<br />
    IDEABoardView setNeedsDisplay];<br />
    'IDEABoardView' may not respond to '+setNeedsDisplay’ in IDEABoardViewController.m</p>
    <p>Vreemd genoeg komt alle ellende in IDEABoardViewController samen. Wie wil en kan voor mij licht in de duisternis schijnen??<br />
     
    Bijdrager
    Ezri Dax

    Dit is alleen je vautmelding, kun je ook de code erop zetten waar het uit voort komt?

    Bijdrager
    Verwijder

    IDEABoardView is een class. wat je nodig hebt is een instance van die class. wellicht heb je die al als property of instance variable. je kan hem ook als parameter meegeven.

    dit compileert niet:

    [IDEABoardView.drawables addObject:d];

    dit compileert wel:

    IDEABoardView *view;<br />
    [view.drawables addObject:d];
    Bijdrager
    e.abrahamse

    Bedankt voor jullie hulp. IDEABoardView was inderdaad een over het hoofd geziene class. Heb een en ander aangepast en de foutmeldingen verdwenen als sneeuw voor de zon.

    Ik blijf nog met een vreemde foutmelding zitten, die volgens mij geen verwantschap heeft met het voorgaand probleem.

    <br />
    - (void)setCurrentTool:(id <Tool>)t<br />
    	{<br />
      [currentTool deactivate];<br />
      if (t != currentTool)<br />
      {<br />
        [currentTool release];<br />
        currentTool = [t retain];<br />
        currentTool.delegate = self;<br />
        [self deselectAllToolButtons];<br />
      }</p>
    <p>	[currentTool activate];<br />
    	[IDEABoardView.setNeedsDisplay];    <<<=== hier gaat het fout!<br />
    }</p>
    <p>

    Op andere plaatsen slikt de compiler deze code wel. Ra,Ra. Heeft iemand een idee??

    Bijdrager
    Verwijder

    wat is de foutmelding?
    is IDEABoardView nog steeds een class?
    de punt moet een spatie zijn, anders geeft de compiler een nogal wazige en verwarrende foutmelding “error: expected ‘:’ before ‘]’ token. confused by earlier errors, bailing out”.

    Bijdrager
    e.abrahamse

    Inderdaad. Dat is de foutmelding die ik nog steeds krijg en nergens kan terugbrengen (wazig dus). Als ik hier de punt weghaal, ontstaan er de volgende „nieuwe” foutmeldingen:

    <br />
    Als de punt hier wordt weggehaald, verschijnt de melding 'IDEABoardView’ may not respond to ‚setNeedsDisplay’ en de door jou al aangegeven meldingen blijven. Ra, ra!</p>
    <p>Nieuw is een oude bekende ('Incompatible type for argument 2 of ‚UIGraphicsBeginPDFContextToData’) met de onderliggende code:</p>
    <p>- (IBAction)touchSendPdfEmailItem:(id)sender {<br />
      // set up PDF rendering context<br />
      NSMutableData *pdfData = [NSMutableData data];<br />
      UIGraphicsBeginPDFContextToData(pdfData, IDEABoardView.bounds, nil); <<== zie boven!!<br />
    	UIGraphicsBeginPDFPage();</p>
    <p>  // tell our view to draw<br />
      [IDEABoardView.drawRect:IDEABoardView.bounds];  <<=="error: expected ':' before ']' token</p>
    <p>  // remove PDF rendering context<br />
      UIGraphicsEndPDFContext();</p>
    <p>  // send PDF data in mail message<br />
      MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];<br />
      mailComposer.mailComposeDelegate = self;<br />
      [mailComposer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"IDEABoard creation.pdf"];<br />
      [self presentModalViewController:mailComposer animated:YES];<br />
    }</p>
    <p>

    Debuggen vereist ervaring en vakmanschap, heb ik wel begrepen. Al doende leer ik ook elke dag. Ik hoop dat dit de informatie is die nodig hebt.

    Krijg ook de indruk dat er kleine syntax wijzigingen worden doorgevoerd en/of de koppeling tussen de bestanden en Interface Builder in deze versie van Xcode 3.2.3 en SDK4 nog niet feilloos verlopen. Ik sla de .xib bestanden altijd eerst op voordat ik compileer. Compileert Xcode gekoppelde bestanden vanaf disk?

    Bijdrager
    Verwijder

    het blijven dezelfde problemen, je gebruikt class IDEABoardView waar je een variabele o.i.d. zou moeten gebruiken. het is bijvoorbeeld

    [dudelView setNeedsDisplay];

    en niet

    [DudelView setNeedsDisplay];

    het verschil zit in dudelView met een kleine d, de instance variable van class DudelViewController, en de class DudelView met een hoofdletter D. ik maak het verschil tussen de namen van de class en variabelen altijd wat groter want hier lees je zo overheen.

    verder hoort tussen een variabele en z’n property een punt, tussen een variabele en de message hoort een spatie. bijvoorbeeld

    [dudelView drawRect:dudelView.bounds];

    en niet

    [DudelView.drawRect:DudelView.bounds];

    het lijken kleine details maar voor de compiler zijn het grote verschillen.

    volgens mij compileert XCode van disk maar je kan ergens instellen dat voor het compileren eerst alles moet worden bewaard. in de vorige XCode die ik had deed hij dan ook de files in Interface Builder maar de huidige versie doet dat bij mij niet meer. ik weet wel uit ervaring dat “Reload All ClassFiles” van IB niet werkt als er een syntax-fout in de header file zit of als de header file in XCode nog niet bewaard is. dit is wel logisch maar een waarschuwing zou dan handig zijn.

    Bijdrager
    e.abrahamse

    Alvast bedankt voor je hulp. Gezien de aard van de foutmeldingen lijkt het mij zinnig mij eerst te verdiepen in de onderliggende theorie van OOP (classes, objects, etc.) voordat ik verder ga. Dan begrijp ik beter wat en waar het mis gaat.

    Bijdrager
    lord anubis

    Nog even een andere tip is.
    Copie er je code zonder de fout meldingen naar het/een forum. Desnoods na een cleanup of reindent.
    Vermeld dan apart je regel met foutcode. Ziet er dan een stuk netter uit.

    Programmeren is in elk opzicht == netjes werken == netjes communiceren.
    Succes.

    Buiten het feit dat het Apple obj-c boek is te downloaden als Pdf, is het ook misschien te vinden in de bibliotheek. Je weet wel waar ze nog echte boeken hebben;-) .
    Lees makkelijker denk ik.

    Bijdrager
    e.abrahamse

    Na het bestuderen van mijn fouten in Obj-C 2.0 van Stephen Kochan heb ik een groot deel van de applicatie foutloos werkend. Nu begrijp ik ook waar en waarom het fout ging. Allemaal kleine foutjes (case sensitive, verwijzen naar de verkeerde variabelen en properties niet goed afsluiten, * teveel bij CGFloat) met grote gevolgen, maar waar je een hoop van leert. En dat was nu direct mijn bedoeling!! Onze bieb heeft deze boeken niet. Ik denk dat ik binnenkort naar Selexys Scheltema in Amsterdam ga voor specifieke boeken voor het ontwikkelen op de iPad.

    Bijdrager
    lord anubis

    Erg goed om boeken te halen, leer je het snelst.
    Selexys is/was geloof ik Donner in Rdam, toch?

    Sommige boeken bekeek ik daar en daarna besteld bij Amazon. Scheelt een hoop. Dan heb drie via daar voor twee hier.
    Bezig om “professional cocoa application security” te bestellen, hier 45Eur daar 28Eur incl verzend. Enne de goedkoopste verzending, is qua verzendtijd nog nooit langer geweest dan 2-2,5 week. Hoef niet eens de deur uit.:-) Het giet n.l hier.

13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.