Well the first thing to keep in mind is that references in C++ are just pointers with some sugar on them that allow you to do stuff without dealing with pointer semantics. So if you want to achieve the effect of passing an argument by reference, you just have the argument be a pointer to whatever you want to alter.
An example from an iPhone AppDelegate:
- (void)applicationDidFinishLaunching: (UIApplication *)application
application is effectively passed by reference in that whatever operations you do to application inside of this function will persist when it returns (i.e. you are operating on the original object not a copy of it).
So your example would be:
void Function(int* rows)
{
*rows = 10;
}
and when you call the function you would do it with Function(&x) where x is an int. Don't confuse the address-of operator (&) with the reference sign in C++, their use is somewhat different.
If you are dealing with objects rather than primitives, you don't really need to worry about it since the normal way of doing things in Obj-C is to only use pointers to objects, so the natural way of coding in Obj-C already has the effect of passing objects by reference.