Sorry for the typo, i meant:
A1 B2 C3 D1 E2 F3 ...
I use objectAtIndex and got:
A1 A2 A3 B1 B2 B3 ...
(this was my typo mistake which i do not mean)
If you don't want A1 A2 A3 B1 B2 B3 then don't use two loops. Step through your design manually before writing code. Or step through the code you wrote manually, and see why it's not doing what you want.
You may think this is tedious, but it's very important that you visualize and understand exactly what your code is doing. I know of no better way to do that than performing it by yourself, by hand, as if you were the computer.
You should also familiarize yourself with the modulus operator, which is % in C. It's also called "remainder". There are other approaches, but calculating an array index modulo the smaller array size is the simplest. Modulo arithmetic is also called circular arithmetic, because it goes around in a circle. It's also called "clock arithmetic", because like seconds, minutes, and hours, it cycles around to its start point after reaching a maximum. That is, the minute after 58 is 59, but the minute after 59 is 0. That's modular arithmetic, where the modulus is 60.
One of the conceptually simple approaches is to extend the shorter array by repeating elements, until it's the same length as the longer one. So if you start with "1", "2", "3", and it needs to be length 7, then append a "1", then a "2", then a "3". By the time you reach the 4th item, you'll be at "1", because that's the first repeated item you appended. Continue until the length is correct. Although this is conceptually simple, it's unwise in practice, because you can't modify arrays whenever you feel like it. So you use modular (i.e. circular) arithmetic to make sure the shorter array indexes go around as many times as needed, but without actually extending the array.