본문 바로가기

Programming

(138)
Swift 코드상에서 deinit호출 여부 체크하기 코드상에서 UIViewController 벗어날 때 retain cycle 해지가 되지 않아 메모리에 상주해 있는 경우가 있습니다. 처음 UIViewController를 만들고 작업 했을 때는 생기지 않았지만, 그 이후에 추가기능을 넣고 빼는 과정에서 특정 객체 참조가 해지 되지 않거나, self 참조 등으로 retain cycle이 다 해지가 되지 않는 경우 이 UIViewController는 계속 메모리에 남아 있는데요 Instruments가 아닌 코드상으로 체크 할 수 있는 방법입니다. UIViewController있는 아래 두 property를 검사 할텐데요 isBeingDismissed: UIViewController가 dismiss될 때, 해당 값은 true입니다. isMovingFromPar..
iOS command build script 스크립트를 통해 Xcode 프로젝트를 빌드하는 방법에 대해서 설명 드리려고 합니다. 구성 Xcode상에서 작성된 코드를 가끔 커맨드를 통해 빌드해야 할 경우가 생깁니다. 저와 같은 경우는 Jenkins를 통해 자동배포 구성 시 Jenkins에서 자동으로 설정해주는 셋팅값 대신 스크립트로 제가 원하는 환경을 만들고 빌드하기 위해 주로 사용합니다. 그 이유는 Jenkins빌드셋팅이 생각보다 쉽지 않을 뿐더러 Xcode버전업 등으로 재 설정이 필요할 경우 일정기간 제대로 동작하지 않는 문제가 발생하기 때문입니다. 사실 Xcode7에서 마이너버전 업데이트 이후에 제대로 동작하지 않아 알아보던 중 구성하게 됐습니다. 아래 스크립트 구성 방식은 아래와 같습니다. Xcode빌드 ipa파일 추출 Fabric을 통해 해..
Observer Pattern in Swift Observer패턴이란 무엇인지에 대해서 알아보도록 하겠습니다. (제가 이해하고 있는 기준이라 혹 잘못된 내용이 있으면 알려주시기 바랍니다.) 옵저버 패턴 설명은 wikipedia를 토대로 작성하였습니다. Observer 패턴 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 쉽게 예를 들어 설명하도록 해보겠습니다. 요즘 미세먼지가 심하잖아요? 저도 미세먼지에 민감한 사람중 한명인데요. 그래서 얼만큼 미세먼지 농도가 나오는지 미세먼지를 측정하고 기록하는 모델을 하나 만들었습니다. 이 소식을 듣고 저처럼 미세먼지에 민감한 분..
iOS 서버별 자동배포 환경 구축 방법 Xcode + Jenkins 설정을 통해 각 서버별로 자동배포 가능하도록 구축하는 방법입니다. 코드 수정 없이 각 서버 및 조건 별로 배포가능 하도록 환경설정 하는 방법에 대해서 기술합니다. 아래 내용에서는 QA용 배포 환경 설정을 추가하는 방법을 기준으로 설명하도록 하겠습니다. Xcode설정 Xcode에서 각 서버별로 배포가능 하도록 환경 설정을 해줘야합니다. Build Configurations 설정 Project > Info에 가면 Configurations 항목이 있습니다. (기본 환경 설정은 Debug와 Release입니다.) 여기서 +버튼을 눌러 Duplicate 하면 되는데요, 어떤 환경설정을 Base로 생성할 것인지 선택하면 됩니다. (Debug 기준으로 할지 Release기준으로 할지) ..
UICollectionView Custom Animation Dribbble의 Valerya Nasikan UX 디자이너의 프로젝트를 보고 앱으로 구현한 내용에 대한 기술입니다. https://dribbble.com/shots/3489204-Flower-App UICollectionView의 스크롤 효과를 모두 활용할 수 있고 앱으로 활용하기 좋은 UX인 듯 하여, iOS 앱으로 바로 구현했습니다. 메인화면 raywenderlich의 Custom Collection View Layout강좌를 토대로 구현했습니다. 기존 강좌에서는 UICollectionView를 vertical로 스크롤 하는 방식에 대해서 설명하였는데, 이를 horizontal로 변경하여 코드를 작성했습니다. 아래는 스크롤 에니메이션 관련 코드 입니다. class FlowerListFlowLayou..
Visual Attributed String(UILabel에 색상 지정) Visual Attributed String https://itunes.apple.com/kr/app/visual-attributed-string/id954961175?mt=12
Tomcat+Jenkins+SonarQube for OSX OSX 상에서 SonaQube에 Jeknins를 연동하여 SonaQube 코드품질 측정을 자동으로 하도록 설치하는 과정입니다. 또한 Tomcat으로 SonarQube를 띄워 서버가 돌아가도록 하는 과정도 포함 했습니다. 설치 순서는 mysql > SonaQube > Jenkins 주의 각각의 패키지 설치는 Homebrew를 통해 진행하였습니다. 혹시 아직 Homebrew가 설치 돼 있지 않으면, 해당 패키지를 설치 한 후, 아래 설치를 진행합니다. 설치 mysql mysql 설치 $ brew install mysql $ brew services start mysql 처음 설치 했다면 root 암호 설정 $ mysqladmin -u root -p password root sonarQube 계정 설정을 위해..
how to check if an app is installed First, you'll need to 'whitelist' the URL by adding the following to your Info.plist file (a security feature--see Leo Natan's answer): LSApplicationQueriesSchemes fb After that, you can ask whether the app is available and has a registered scheme: guard UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb://")!) else { NSLog("No Facebook? You're a better man than I am, Charlie Brown."..

반응형