처음엔 잘 이해가 안갔는데,,,
프로토콜은 타입이어서 어디든 사용할 수 있다.
struct SearchServices: HasSearchService {
let searchService: SearchService
}
protocol HasSearchService {
var searchService: SearchService { get }
}
protocol SearchService {
func fetchCategories() -> Single<SearchCategories>
저기 보면 HasSearchService가 searchService를 property를 가지는데 SearchService protocol을 요구하고 있다.
위에서 언급했듯이 protocol은 type이기 때문에, 저 searchService는 그냥 해당 SearchService protocol을 구현해준, 그런 클래스나 구조체를 넣어주면되고,
저렇게 protocol을 타입으로 하면 해당 protocol에서 준수하길 바라는 함수들과 property에 접근 가능하다고 생각하면 된다.
참고 문서
protocol as property: https://zeddios.tistory.com/263