Konstig print i Project Builder!

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Någon som kan förklara följande konstiga utskrift, skriven i Project Builder Foundation Tool, enligt "Learning Cocoa":

Kod:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableDictionary *myDict;

myDict= [[NSMutableDictionary alloc] init];

NSLog(@"Dict description: %@ items.
", myDict);

// insert code here...
NSLog(@"Hello, World!");
[myDict release];
[pool release];
return 0;
}

Resultat:

2001-11-15 20:01:40.241 Hello World2[17456] Dict description: <CFDictionary 0x10e9c0 [0x8016024c]>{count = 0, capacity = 3, pairs = (
)}
items.
2001-11-15 20:01:40.306 Hello World2[17456] Hello, World!

Hello World2 has exited with status 0.

Det fetstilta borde inte vara där. Liknande problem har jag fått tidigare också...

/Jont Olof

Det är raden

NSLog(@"Dict description: %@ items.
", myDict);

som ger den utskriften

Citat:

Skapades ursprungligen av: odlund:
Det är raden

NSLog(@"Dict description: %@ items.
", myDict);

som ger den utskriften

Jo så mycket har jag förstått, men problemet är tecknen:

<CFDictionary 0x10e9c0 [0x8016024c]>{count = 0, capacity = 3, pairs = (
)}

Enligt min fina bok så skall %@ tecknet rabbla upp de definerade objecten i dictionairyn.

Ska den verkligen se ut så här? Det ser väldigt "skräpigt" ut.

Samma sak hände med den första uppgiften jag gjorde.

Följande kod:
#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])
{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *myArray;

NSLog(@"Hello, World: This is a Foundation Tool.
");

myArray = [[NSMutableArray alloc] init];

NSLog(@"Array deskription: %@ items./n", myArray);

[myArray release];
[pool release];
return 0;
}

Resultatet blev:
2001-11-15 23:33:36.316 Hello World[29907] Hello, World: This is a Foundation Tool.
2001-11-15 23:33:36.728 Hello World[29907] Array deskription: <CFArray 0x60410 [0x8016024c]>{type = mutable-small, count = 0, values = (
)} items./n

Hello World has exited with status 0.

Fast det skulle bli:
2001-11-15 23:33:36.316 Hello World[29907] Hello, World: This is a Foundation Tool.
2001-11-15 23:33:36.728 Hello World[29907] Array deskription: ( ) items.

Hello World has exited with status 0.

Det verkar alltså som om %@-kommandot spökar...

/JO

[ 15-11-2001: Meddelandet ändrat av: Jont Olof ]

Citat:

Enligt min fina bok så skall %@ tecknet rabbla upp de definerade objecten i dictionairyn.

Nja, jag tror din fina bok har fel. %@ instruerar NSString (eller NSLog) att skicka descriptionWithLocale: till objektet (eller description: om objektet inte svarar på descriptionWithLocale: ). Det är alltså bara ditt dictionary-objekt som gör en textbeskrivning av sig själv. Vill du få beskrivning även av objekten i dictionaryt måste du accessa dem specifikt.

"Learning Cocoa" är för övrigt rätt full av buggar.

[ 16-11-2001: Meddelandet ändrat av: Per Ejeklint ]

Citat:

Skapades ursprungligen av: Per Ejeklint:

"Learning Cocoa" är för övrigt rätt full av buggar. [/B]

Vet du hur andra exemplet ovan skulle skrivas för att få önskad utskrift?

Det finns inga hemsidor på nätet med rättad kod för "Learning Cocoa"? Och finns det någon alterntiv litteratur (dvs inga hemsidor) för att lära sig Cocoa?

/Jont Olof

  • Medlem
  • Borlänge
  • 2001-12-19 20:01
Citat:

Skapades ursprungligen av: Jont Olof:

Det finns inga hemsidor på nätet med rättad kod för "Learning Cocoa"?

Och finns det någon alterntiv litteratur (dvs inga hemsidor) för att lära sig Cocoa?

/Jont Olof

O´Reilly har en Errata-sida där vissa fel i Learning Cocoa finns korrigerade:
http://www.oreilly.com/catalog/learncocoa/errata/
När det gäller alternativ litteratur föreslår jag att du tittar närmare på
Cocoa Programming for Mac OS X
Den har fått bättre kritik än Learning Cocoa...

Okej...

Tack för alla förslag!

/JO

1
Bevaka tråden