Re: Accessing a property of a returned object?
Re: Accessing a property of a returned object?
- Subject: Re: Accessing a property of a returned object?
- From: Mark Teagarden <email@hidden>
- Date: Sun, 27 Jul 2008 02:24:25 -0500
On Jul 27, 2008, at 2:17 AM, Nathan Kinsinger wrote:
On Jul 27, 2008, at 12:33 AM, Mark Teagarden wrote:
Hi,
I'm working on a strategy game in which a NSMutableArray called
'army' contains a series of Unit objects. Each Unit contains a
property called next_unit, which is a pointer to the next unit in
the array - I'm implementing a linked-list so that units can be
moved sequentially.
Army starts off with six units, which are assigned one at a time to
the array:
for(i=0;i<6;i++){
u = [[Unit alloc] initWithPositionX:24+i Y:14-i];
[army addObject:u];
...
[u release];
}
Obviously when the first unit is added, there's nothing for
next_unit to point to, so I have to go back and do it on the next
loop iteration, which is where my problem arises:
if(i > 0) [army objectAtIndex:i-1].next_unit = [army lastObject];
Clearly, what I want to do is get the next-to-last unit in army and
point its next_unit pointer to the most recently added unit.
However, XCode she don't-a like this:
error: request for member 'next_unit' in something not a structure
or union
Is there a recommended way for accessing an ivar with synthesized
gettors/settors, that belongs to a returned object?
I hope I've explained my problem clearly enough. Thanks for an
advice you may offer.
Mark
You will need to cast the object returned from the array to your
Unit class:
if(i > 0) (Unit*)[army objectAtIndex:i-1].next_unit = [army
lastObject];
As a suggestion, if the order that Units move in is different than
the index in the army array you could just create a second array
(say 'marchingOrder') that has the same Unit objects in it ordered
as you want them. Items in an NSMutableArray can be inserted and
removed from any index and can be reordered however you want.
--Nathan
Ah. I think I was under the impression that objectAtIndex was already
returning a pointer to an object of type Unit, in which case the cast
would be unnecessary. Is the actual object, or a copy thereof, being
returned? I thought that sort of thing was frowned upon as wasteful.
In any event, thanks Nathan. I'll try that.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden