On Fri, Oct 31, 2008 at 4:38 PM, Adam Penny <[EMAIL PROTECTED]> wrote:

> My main question is how to get an int from an NSString,

  See NSScanner.


> NSArray *macArray=[[NSArray alloc] init];
> macArray=[mac componentsSeparatedByString:@":"];
> for (int i=0; i < [macArray count] ;  i++)
>        {
>        //somehow need to get an int called dec from the number in the
> NSString then...
>        NSString *hex=stringWithFormat:@"%x",dec;
>        [macArray[i] autorelease];
>        macArray[i]=hex;
>
>        }

  You have a lot of reading to do. Look for the introductory
Objective-C material on Apple's site and/or pick up a good book on the
subject. This is almost all gibberish, unfortunately.

> NSArray *macArray=[[NSArray alloc] init];

  You've created a new immutable array. It is empty and, because it's
immutable, it's nearly useless (unless you intend to send an empty
array to some other object - in which case you've leaked it if you
don't release it).

> macArray=[mac componentsSeparatedByString:@":"];

  You've leaked the array you just created by assigning a new array to
macArray. Incidentally, if you look at the documentation for
-[NSString componentsSeparatedByString:], you'll see that it also
gives you an immutable array. This is important for the line below ...
more on that in a bit. Note also that, if you read the memory
management documentation carefully, you didn't directly create this
array, so it is autoreleased.

> for (int i=0; i < [macArray count] ;  i++)

  This is fine if you're using C99 mode ... otherwise, you'll need to do this:

int i;
for (i=0; i < [macArray count] ;  i++)

 ... or you'll get a complier error (you can't declare a variable
inside the for() initializer.

>        //somehow need to get an int called dec from the number in the
> NSString then...

  As above, see NSScanner and its associated documentation.

>        NSString *hex=stringWithFormat:@"%x",dec;

  Utter gibberish, sayeth the compiler. To what object or class are
you sending the "stringWithFormat:" message? Also, are you sure you
want an unsigned integer (%x) in your string format? Are you sure you
don't just want an integer (%i)?

>        [macArray[i] autorelease];
>        macArray[i]=hex;

  Also gibberish. First, NSArray is an object, not a C array. Read up
on NSArray's documentation to discover how to access elements (hint:
-objectAtIndex:). Second, as referenced above, macArray is an
immutable array. You'll want to create (and autorelease) a
-mutableCopy of the "componentsSeparatedByString:" if you want to
mutate the array. Then you want to "replace" an "object at" a given
"index" (another hint). Third, why are you individually autoreleasing
objects in an array? Did you create them? Nope. Leave 'em alone.

  As I said, you have a lot of reading to do, as this code will
probably anger your complier quite efficiently. There are a lot of
concepts you appear to be missing, so the best investment you can make
right now is "study time". A word of encouragement: it *will* make
sense if you keep at it. Good luck!

--
I.S.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to