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
2010-05-02 08:46:42