삽질기
[iOS] Swfit로 해시태그 기능 구현하기
진행 중이던 프로젝트에서 해시태그 기능을 작업했다. 일단 내가 원하는 기능은 해시태그끼리 붙여놔도 잘 작동되기, 한글 인식하기 정도였는데 마침 어떤 개발자 분의 블로그에 좋은 코드가 있어서 참고를 했다. import UIKit // 한글, 영문, 숫자만 가능 class HashtagTextView: UITextView { var hashtagArr: [String]? func resolveHashTags() { self.isEditable = false self.isSelectable = true let nsText: NSString = self.text as NSString let attrString = NSMutableAttributedString(string: nsText as String) let..
[iOS] extension에서 Override하기
발단 슈퍼 클래스인 ReplyTVCell을 상속받은 ReReplyTVCell이라는 서브 클래스에서 메서드 내부를 수정하기 위해 override 선언을 했더니 'Overriding non-@objc declarations from extensions is not supported'라는 에러 메시지가 떴다. 해결 - @objc 열심히 구글링을 했더니 슈퍼 클래스의 메서드 앞에다 @objc를 붙이면 된다는 사실을 알아냈다. extension ReplyTVCell: NuteeAlertActionDelegate { // Super class @objc func showNuteeAlertSheet() {} } 이제 override가 가능해진다! class ReReplyTVCell: ReplyTVCell { // S..
[iOS] 불필요한 서버 호출 코드 수정하기
프로젝트를 수행하고 있던 중에, 컬렉션 뷰 셀을 초기화와 동시에 서버에서 호출한 데이터를 불러와야 하는 일이 있었다. 그래서 아무 생각 없이 UICollectionViewDataSource 프로토콜의 메서드인 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {} 이 안에다 초기화 코드와 서버 호출 코드를 모두 작성했다. 그랬더니 발생한 문제... 셀이 재사용될 때마다 불필요한 서버 호출이 발생하는 것이다. 내가 원하는 건 단 한번의 서버 호출로 셀에 데이터를 채우고 초기화하는 거라 코드를 수정할 필요가 있었다. override init(frame:..