(void) vs (id) for method return values


I have a general question about the return designation for methods. Take this UITableView method, for example:

Why is return object for this method (id) even though the only object it’s designed to return is a UITableView. Shouldn’t the method be:

Along the same lines, when do we use (void) vs (id) ? For example, let’s say we wrote a setter method to set a person’s weight like this:

- (void)setWeight(int)ounces { weight = ounces; }

Why couldn’t we use (id) instead of (void) here?