THIS IS ELLIE

isEmpty와 count == 0 비교하기 본문

개발/Swift

isEmpty와 count == 0 비교하기

Ellie Kim 2019. 4. 5. 01:06

진행했던 프로젝트에서 searchBarTextField에 text가 없으면 검색 버튼을 비활성화시켜 검색이 되지 않도록 해주는 작업이 필요했습니다.(즉 검색창에 검색할 글자가 없으면 검색 버튼을 비활성화! 검색할 글자가 있는 경우 검색 버튼을 활성화!)

 

먼저 textField에 text가 있는지 확인해 주고
- 있다면 검색버튼 활성화
- 없다면 검색버튼 비활성화
를 코드로 작성하며 생긴 궁금증 ,,, 

 

음 textField에 text가 있는지 확인해 주는 작업은 아래와 같이 두 가지 방법이 존재했습니다.
첫 번째 방법 isEmpty 
두 번째 방법 count == 0

 

글자가 있냐 없냐의 여부만 알면 되니까 음,, (개인적인 생각) 조금 더 직관적인 isEmpty를 쓰자.
그런데 count == 0과 비교했을 때의 차이점은 뭘까.. 

 

isEmpty

isEmpty는 일단 true , false를 반환합니다.
즉 문자열의 시작 인덱스와 문자열의 끝 인덱스가 같은지 확인합니다.
모든 문자를 헤아릴 필요가 없습니다.  
그러므로 isEmpty의 시간복잡도는 O(1)입니다.

공식 문서에서 컬렉션이 비었는지 확인해야 할 때 count속성이 0인지 확인하는 대신 isEmpty속성을 사용하라고 하네요. RandomAccessCollection을 따르지 않는 컬렉션인 경우 count를 사용하라고 합니다.

 

count

count는 문자열을 처음부터 시작해 끝까지 새어나갑니다.
그러므로 count의 시간복잡도는 O(n)입니다.
빈 문자열이 있으면 걸리는 시간이 짧겠지만 문자열이 길어지면 그에 따라 계산하는데 시간이 꽤 소요됩니다.

 

 

결론 : 문자열이 비었는지 확인할 때는 isEmpty를 사용합시다.

반응형

'개발 > Swift' 카테고리의 다른 글

Swift ARC에 대해서(1)  (0) 2019.04.18
Swift String Substring  (0) 2019.04.12
스위프트 Copy-On-Write  (0) 2019.03.29
reverse()와 reversed()비교  (0) 2019.03.24
Swift functions sequence, stride, swap  (0) 2019.03.08