However, the main problem is probably your use of glGenVertexArrays. Its first argument defines how many array objects the current invocation should allocate, and its second argument is a pointer to an array where the addresses of the allocated VAOs should be stored. E.g.
GLuint addr; glGenVertexArraysOES( 3, addr );would allocate 3 VAOs and store the belonging addresses into addr, addr, and addr, resp.
You are using
GLuint vertexArrayPointer; glGenVertexArraysOES(objectArray.count, &vertexArrayPointer);what should probably be replaced by
GLuint vertexArrayPointer; glGenVertexArraysOES(1, &vertexArrayPointer);or, IMHO even better with some renaming e.g.
GLuint vertexArrayAddress; glGenVertexArraysOES(1, &vertexArrayAddress);
If you ignore this, and objectArray.count is greater than 1, then glGenVertexArrays will write more than 1 address although you have reserved only memory place for a single address, meaning you accidentally override memory! This kind of error is very dangerous, because it isn't detected at compile time and may lead to sporadic and unrelated errors at runtime.
Please notice that the above scheme is valid for (AFAIK) each and every kind of object in OpenGL (VBO, VAO, FBO, ...)