On Dec 7, 2010, at 12:11 PM, Dennis wrote: > Thanks for taking a look at my code.
Sure. > 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. As others have pointed out, that doesn't say anything about the code, it says something about the debugger. >> 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 debugger may know the element count of a fixed-size C array, but the array itself is a "dumb" data structure. You can't query a C array for its element count in code. Also, the number of elements in the array is (potentially) a different question than the capacity of the array. You seemed to be saying that you were expecting the array to know or express how many elements you had assigned into it. It doesn't know that. That is, even if the debugger knew the size of allColumns, that wouldn't change as you assigned things into it. It would be a fixed size and only the contents of each position in it might change. So, stepping through your loop expecting the debugger to say "now there's 1 element in the array, now there are 2 elements, etc.", which is what it seemed your were saying, is unreasonable. >> 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. The expression you used to assign to gameColumns read boardDimension elements from the C array. So, it's simply not true that you were "array with -1 elements to it". There's no such thing as a C array with negative elements. >>> 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. Well, you see object pointers being assigned into the positions within the array. You can't "add" to a C array. > So why do you say it's impossible to determine this? I was saying that it's impossible for the statement "allColumns[i] = column;" to not affect the array, assuming 'i' is within the array's bounds. Regards, Ken _______________________________________________ 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