나는 ObjC와 Cocoa를 픽업하고 있는데, 이는 프로그래밍에 대한 첫 번째 진지한 시도이기도합니다.InitWith Methods vs. Factory Methods
인스턴스에서 호출되는 initWith 메소드와 클래스에서 호출되는 팩토리 메소드의 차이점에 문제가 있습니다.
먼저 "팩토리"메서드라고 불리는 이유는 무엇입니까? "InitWith"메서드라고 불렀던 것에 대한 적절한 용어가 있습니까?
둘째, 기능상의 차이점은 무엇입니까? 메모리 관리가 의미하는 바는 (팩토리 메소드가 자동 렌더링 된 객체를 반환한다는 것)?
예를 들어 [NSString stringWithString: (NSString*)aString]
과 [[NSString alloc] initWithString: (NSString*)aString]
의 실제 차이점은 무엇입니까?
[[NSString alloc] initwithString: (NSString
*)aString];
당신은 따라서 메모리 ALLOC에 문자열을위한 공간을 배치 할 ALLOC을
당신의 예에
이것은 Rugluds와 Audacitor 모두에게 해당됩니다.'initWithString : '메시지를 보낼 때'(NSString *)'을 포함 할 필요가 없습니다. 메소드의 선언 만이 필요합니다 (메소드가 예상하는 유형을 지정하기 위해). 이것을 메시지의 일부로 포함 시키면'aString' 값을 NSString *으로 형변환합니다.'aString'이'NSString *'이면, 이것은 아무것도하지 않고 불필요합니다. 그것이 다른 것이라면 캐스트는 여전히 아무런 도움이되지 않습니다 : 컴파일러를 닫을 것이지만 런타임에는 충돌이 발생합니다. –