Hi Ken, Thanks for taking a look at my code.
On Dec 6, 2010, at 10:35 PM, Ken Thomases wrote: > If you step after the line "TileColumn *allColumns[boardDimension - 1]", > nothing has happened, yet. That's just a declaration. But if for example I declare int test[16], the debugger shows the array "test" with 16 members. That's not happening in the case of my code with allColumns. It's displaying an array of -1 members. > Or am I misunderstanding, and you mean you have stepped repeatedly after that > line, through the loop? Yes, exactly. > Also, what you mean "array remains with a member count of -1"? Which array? > How are you assessing the member count? I'm talking about allColumns. When I inspect allColumns in the debugger after stepping over the line "TileColumn *allColumns[boardDimension - 1]", the debugger shows -1 for the array member count. That's how I'm assessing it. > The allColumns array is a C array, which doesn't know its element count. That doesn't make any sense to me. As mentioned above, if I declare an int array with a member count, it displays as such in the debugger. > The gameColumns array, which I assume is an instance variable of type > NSArray*, is nil until you assign to it in the last statement before the > return. After that assignment, it will be a pointer to an NSArray with > boardDimension elements (or it will have failed with an exception if > something is very wrong, like some element of allColumns is still nil). I understand that the NSArray gameColumns is nil until I assign to it. Unfortunately I am assigning a C array with -1 elements to it because the declaration TileColumn *allColumns[boardDimension - 1] allocates an array with -1 members as displayed in the debugger. >> In the for loop, the line "allColumns[i] = column;" doesn't produce any >> errors but doesn't change the array. > > Doesn't change which array? allColumns? That's basically impossible. How > are you determining this? By looking at allColumns in the debugger. When I look at other code in the debugger that works properly to create and populate an array, I can see objects being added to the array. So why do you say it's impossible to determine this? > Is there any chance that you're trying to debug a release build (or any build > that has optimizations enabled)? An optimized build will be very confusing > to debug. No. It's a debug build. > Finally, something to consider: there's nothing wrong with the technique > you've used of populating a C array and then building an NSArray from that C > array. However, you might consider creating an NSMutableArray that starts > empty and then, during the for loop, each TileColumn is added to it. If you > create the NSMutableArray with +arrayWithCapacity: or -initWithCapacity:, > you'll even avoid reallocation as you add elements to the array. I experimented with doing that unsuccessfully. I am beginning to think that the problem is with having declared boardDimension at the top of my file. I did another experiment and added: int test[boardDimension]; to the file. After stepping over that in the debugger, it showed an array with -1 members. I changed it to int test[16], stepped over that and the debugger showed an array with 16 members. Am I misunderstanding how the debugger works? If not, why is it now working to declare boardDimension at the top of the file?_______________________________________________ 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 arch...@mail-archive.com