본문 바로가기

IOS

(5)
[iOS] 다크모드 비활성화 유지보수 중인 앱에 도저히 다크 모드를 지원할 시간과 에너지(+ 예산)가 없어서 다크 모드를 아예 비활성화하기로 한다. Info.plist 에 다음과 같이 User Interface Style 항목을 추가하고 Light를 입력하면 다크 모드가 비활성화된다.
[iOS] 노티 옵저버 등록과 해제 노티에 등록된 감시 객체가 삭제되지 않는 문제가 발생! 수 시간의 디버깅 끝에 원인을 찾았다. 노티 센터에 등록한 옵저버와 옵저버를 삭제하는 코드에서의 옵저버 객체가 달랐던 것이다. 감시 객체를 삭제하는 코드는 다음과 같이 작성했다. 즉 self - 뷰 컨트롤러가 옵저버라고 생각하고 짰는데.. 옵저버를 블록 객체로 등록했었다. NSNotificationCenter.defaultCenter().removeObserver(self) 이 기회에 좀 정리해본다. == 객체를 옵저버로 사용 노티 발생 여부를 감시하는 옵저버(Observer)를 등록하는 방법은 다음과 같다. 이 메소드에서 노티 센터에 등록되는 옵저버는 observer 파라미터의 객체다. // 옵저버 객체 : observerfunc addObserv..
[iOS] 뷰의 아웃렛 작성시 weak? strong? 스토리보드를 이용해서 뷰의 아웃렛을 작성할 때 다음 그림처럼 Storage 속성에서 Strong과 Weak 중 하나를 선택해야 한다. Strong은 객체를 소유해서 레퍼런스 카운트가 증가하는 프로퍼티고 Weak은 객체를 소유하지 않는 포인터다. Swift 에서는 다음과 같이 생성된다. @IBOutlet var strongView: MyView! @IBOutlet weak var weakView: MyView! 오브젝티브 씨에서는 다음과 같이 생성된다. @property (strong, nonatomic) IBOutlet MyView *strongView; @property (weak, nonatomic) IBOutlet MyView *weakView; Strong으로 선택하면, 뷰 컨트롤러에 작성한 프로..
[Swift] 파일 접근하기 플레이 그라운드로 스위프트 코드를 작성하다, 이미지 파일 참조가 안 되는 현상이 발생했다. 분명 스위프트 코드와 같은 디렉토리에 파일을 복사하고 상대 경로로 접근하려니, 접근이 안된다. let fm : NSFileManager = NSFileManager.defaultManager() let filePath = "./image1.png" fm.fileExistsAtPath(filePath) 스위프트 파일이 저장된 위치와 스위프트 파일이 실행되는 경로가 다른 점이 그 원인이다. 실행 디렉토리를 찾아보자! fm.currentDirectoryPath 다음과 같이 라이브러리 폴더가 찍힌다. /Users/USER/Library/Containers/com.apple.dt.playground.stub.OSX.PLAY..
[iOS] 한영이 섞인 XML 파싱시 한/영 분리 문제.. NSXMLParser NSXMLParser를 이용한 파싱에서 한글과 영어가 섞인 항목에서 한영 분리 현상이 발생하고 있다. Event-Driven 파싱을 할때 NSXMLParser의 겔리게이트 중 -(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 메소드를 이용한다. XML 문서가 아래와 같이 영문 + 한글 형식이면 abc가나다 abc | 가나다 가 분리된다. 이상현상으로는 영문 + 한글 + 영문 형식이면 abc가나다def 의 경우에는 abc | 가나다def 로 분리된다. 한글 + 영문 + a 으로 시작하는 경우에는? 가나다abc라마바def 가나다abc라마바def 가 하나의 토큰으로 인식된다.