@interface Test: NSObject
{
}
- (id)initObject:(id)obj;
@end

위 인터페이스의 초기화 메소드에서 반환값이 id 타입이라고 되있는데 id 타입은 Test 클래스를 가르키는건가요?

객체 내 메소드에서 객체 자신을 가르킬때 self를 쓰듯이 객체의 클래스 타입을 쓸때 Test라고 안쓰고 id라고 써도 되는건가요?




그리고 책에서 어떤 객체가 특정 클래스의 인스턴스라는걸 명시해야 할 필요가 있을때 Foo 타입으로 기술한다는데 예제를 보니

Volume *v;

이런식으로 객체의 포인터 형식으로 표시하네요. Foo 타입이 id 타입처럼 객체 내에서 반환값이나 인자값으로 어떤 클래스 타입을 받을때 그 클래스 이름 대신에 

- (Foo *)method:(Foo *)obj;

같이 받을 수 있다는 말인가요?