+2  A: 

In your initWithCoder method:

NSUInteger * len;
*len = (unsigned int)(rows * columns * sizeof(float));

IN essence you are overwriting your stack, which will cause undefined results.

Should be:

NSUInteger len = (unsigned int)(rows * columns * sizeof(float));
float * temp = (float * )[coder decodeBytesForKey:@"matrix" returnedLength:&len];
Kenny
Thanks, that was perfect.
ajduff574