본문 바로가기

프로그래밍/iOS

(182)
[XCode] break point가 이상하게 뜰때 XCode12로 올리면서 설정을 초기화해서 그런지, 고객사쪽에 셋팅이 안되서 그런지... break point를 걸어서 디버깅을 해보려는데 아래와 같이 뜬다. 왼쪽 콜스택 보면 확실히 그자리가 맞는거 같은데 코드로 안뜨니 전혀 디버깅이 되지 않는다. 이는 XCode위쪽 Debug->Debug Workflow에 Always Show Disassembly에 체크가 되어 있기 때문이다. 이를 한번 더 클릭해서 체크를 해제해주면 위와 같이 원래대로 잘 돌아간다.
[XCode] pod 라이브러리 사용하기(예제 RxSwift) 1. CocoaPod 왜 쓰냐? 오픈소스를 관리하는 방법중 하나. 그냥 다운로드 받아서 직접 프로젝트에 넣을 수도 있으나 오픈소스 저장소를 링크해서 프로젝트에 넣을 수 있다. 그냥 다운로드 받아서 넣으면 업데이트가 어렵다. 오픈소스 저장소를 링크해서 넣을경우 같은 라이브러리를 사용하면 충돌이 난다. 만약에 프로젝트에서 A란 라이브러리를 쓰는데 링크해서 받은 B라는 라이브러리 안에 A가 포함되어 있으면 충돌이 나는 것이다. 코코아팟을 쓰면 라이브러리 간의 의존성 체크 및 라이브러리 버전 관리, 지원 OS 및 라이브러리 설정이 쉽다. 2. 어떻게 쓰나? 터미널에서 sudo gem install cocoapods를 실행하자. 명령어가 없다면 홈브류, 루비를 먼저 설치하자. 명령어를 치면 password(sud..
[iOS] raw data읽어오기 RGBA이미지를 그대로 파일로 써서 로깅을 하는 편인데, 이를 불러오는 코드, 일단 프로젝트에 파일을 추가하면 이는 메인번들에서 가져올 수 있다. 아래는 테스트 프로젝트에서 한것이라 main bundle이 아니라 test쪽 번들에서 가져왔디. NSBundle *bundle = [NSBundle bundleForClass:self.class]; NSData *rawData = [NSData dataWithContentsOfFile:[bundle pathForResource:@"파일이름" ofType:@"확장자"]]; 요새 은근 디버깅할 일이 많은데, 자꾸 까먹어서....
[iOS] application: supportedInterfaceOrientationsForWindow: not called 아이패드에서 화면이 돌아가지 않는 이슈가 있어,해당 함수에 브레이크 포인트를 걸어봤지만 되지 않았다.그 때의 해결법프로젝트 설정 - General에서 Requires full screen 설정하면 된다.
[iOS] 앱스토어 업데이트 체크 현재 버전과 앱스토어 버전을 비교해서,앱스토어 버전이 높으면 앱스토어 화면으로 전환하는 로직을 기술 1. AppStore 버전 체크 enum VersionError: Error { case invalidResponse, invalidBundleInfo } class AppStoreCheck { static func isUpdateAvailable(completion: @escaping (Bool?, Error?) -> Void) throws -> URLSessionDataTask { guard let info = Bundle.main.infoDictionary, let currentVersion = info["CFBundleShortVersionString"] as? String, // 현재 버전 let..
[XCode] sceneDelegate 삭제하기 xCode 11.2로 새 프로젝트를 만들면 SceneDelegate.swift파일이 추가 된다. 이를 그냥 지우고 빌드하면 검은 화면이 나오고, iOS13이상으로 강제하여야 하기 때문에 제거하는 법을 기술한다. var window:UIWindow? 추가 위와 같은 과정을 거치면 SceneDelegate를 무시하고 빌드 가능하다.
[swift] string으로 함수 호출하기 webview에서 넘겨받은 값으로 함수를 호출하고 싶어서 string으로 함수 호출하는 것을 찾아본 결과 objc의 selector를 사용하라고 나와서 그 방법 기술 결국 호출하고 싶은것은 StonePass.pincodeReg(dic) StonePass.pincodeAuth(dic) StonePass.pincodeDereg(dic) StonePass.bioReg(dic) StonePass.bioAuth(dic) SonePass.bioDereg(dic) 6가지 함수를 구분 이를 위해 호출하는 string을 구성 위와 같이 설정한 후 StonePass.perform(Selector(funcName), with: dic) 를 호출하면 해당 함수를 호출할 수 있다.
[iOS] http통신 허용하기 App Transport Security policy requires the use of a secure connection