NSValue can store arbitrary structures, as long as they are of fixed length.

float test[4][3] = {{1.0, 2.0, 3.0}};
float result[4][3] = {0.0};

NSValue *value = [NSValue value:test withObjCType:@encode(float[4] [3])];
[value getValue:result];

NSLog(@"%f %f %f", result[0][0], result[0][1], result[0][3]);