본문 바로가기

개발

ios7 UIKit Dynamics 적용 예제 http://meetkei.com/ 님의 블로그에서 본 UIKit Dynamics 편을 참고 하여 만들어본 소스다. 이런 정보를 제공해준 kei님에게 감사의 말씀을 전하며. 어린 기능을 만들어준 애플에게 짱짱맨을 날리며. 더보기
crittercism 에 dsYM을 추가해보자 아이폰, 아이패드, 맥의 App 오류나 버그를 사용자의 실제 사용으로 리포트를 받을수 있는 유용한 crittercism 하지만 정말 자세하게 나오지는 않아 막연하게 그런 이슈가 있다고 하고 일일이 다 찾아봐야 하는 번거로움이 있고 실제 변수가 계속 다르게 들어올때에는 그런 이슈가 나에게 발생하기만을 기다리며 디버깅 해야 하는 경우도 태반이다 이모든게 dsYM파일이 있다면 좀더 자세하게 분별 가능 하다는걸 이제야 깨달았다 그래서 이번엔 crittercism 에 dsYM을 추가해보는 시간을 가져보자 먼저 해당 프로젝트파일에 crittercism SDK 라이브러리를 적용시킨다. (지금 포스팅은 dsYM등록을 위한 포스팅이기때문에 넘어간다) 라이브러리 파일안에 요런 파일이 있을것이다. dsym_upload.sh.. 더보기
UIWebView 웹페이지의 넓이제한주기 ios7으로 전환이 되면서 유니버셜이 아닌 앱이 아이패드에서 웹뷰를 띄울시에 WebView안에 웹페이지 넓이가 뷰사이즈에 맞지 않게 되는 현상을 발견했다. 이때 웹뷰사이즈를 자바스크립트로 강제로 집어 넣으면 된다. UIWebViewDelegate를 이용하여 - (void)webViewDidFinishLoad:(UIWebView *)webView 메서드를 호출할때 [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)webView.frame.size.. 더보기
UIWebView에 Header정보 넣기 UIWebView의 url에 디바이스의 각종 정보를 세션으로 넣어서 사용했었는데 창을 띄우고 한참 있다 웹에서 작업을 다시 시작 하면 세션정보를 잃어 버리는 상황이 발생한다. 이를테면 댓글입력 웹창에서 댓글들을 계속 보다가~~~~~~~ 보다가 ~~ 댓글을 입력 하면 일정시간이 지나 url에 넣었던 정보를 잃어 버릴때가 있다. 그래서 직접 헤더로 정보를 넣는식으로 바꾸기로했다. 방법은 우선 UIWebViewDelegate를 이용 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 인스턴스 메서드 안에서 .. 더보기
UIWebView의 로드된 웹페이지에 JavaScript 소스 넣기 또는 수정, 삭제 하기(target:'_blank') UIWebView에서 특정 링크에대해 개별적인 처리를 하려고했다.그 특정링크는 targer:'_blank' 속성을 가진 녀석을 safari로 링크를 돌리려고했다. 하지만 앱상에서 해당 웹뷰의 웹페이지 속성을 불러올수 있는 방법을 못찾다가 다음과 같은 방법으로 해결했다. 해당 웹페이지의 javaScript 속성을 변경하는것. - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"\ var d = document.getElementsByTagName('a');\ for (var i = 0; i < d.length; i++) {\ if (d[i].getAttribute('target') == '_blank') {\ d[i].removeAtt.. 더보기
custom TableView Cell Button selector 커스텀으로 셀을 구성후 각각 셀마다 버튼을 눌러 그셀의 IndexPath를 전달&출력하는 방법 먼저 cell에 버튼셀렉터를 구현한다. [cell.selectButton addTarget:self action:@selector(selectButtonPush:) forControlEvents:UIControlEventTouchUpInside]; 그후 selectButtonPush메서드로 가서 다음의 코드를 입력한다. customCell * cell = (customCell *)[[sender superview] superview]; NSIndexPath *indexPath = [_tableView indexPathForCell:cell]; 그리고 로그를 출력 하면 내가 누른 셀의 로우값을 알아낼수 있고 그해.. 더보기
Core Data Attributes수정 및 추가 할때 순서 자꾸 햇갈려서 그리고 신중히 해야 하기때문에 여기다 적어놓겠다.먼저 현재사용하고 있는 data model을 버전을 업데이트햐야한다. 이렇게 현재사용하고 있는 data Model을 선택후 엑스코드 메뉴 Editor 에서 Add model Version 을 클릭한다 그러면 다음과 같은 화면이 뜨게 된다 Finish를 누르자 이름은 자신이 원하는 이름으로 해도 좋지만 나중을 알아보기 쉽게 설정한다 (본인은 기본숫자) 모든과정을 마치면 이렇게 아름다운 새로운 버전의 data model이 생겼다. 끝이 아니다 만들었으니 수정을 해야지.저 아름다운 데이터모델들을 감싸고있는 상위 data model을 클릭하면Xcode 오른쪽 Utilities창에 이런 섹션이 있을것이다 여기서 Current를 클릭하여 방금 만든 da.. 더보기
Xcode - Profile의 leaks을 파헤쳐보자 어떤 프로젝트를 만들고나서 또는 만드는 중에 메모리 릭이나 현재 이앱의 무게? 를 측정하기 위해 사용하는 툴이 있다. 바로 요녀석 아이콘 모양도 엑스레이 촬영하는것처럼 생긴 녀석이다바로 내가 만든 프로잭트를 종합검진하는 녀석이라고 생각 하면되겠다. 안에 들어가보면 여러가지 항목이 있는데 메모리나 CPU File System등의 항목을 검사할 수 있지만 이번 포스팅은 가장 자주 사용하는 Leaks에 대해서 이야기 하겠다.Leaks는 메모리검사라고 생각 하면되는데 내가 만든 앱을 실행했을때 사용되는 메모리 새는 메모리 총사용메모리등 메모리전반적인 자세한 내용을 보여준다. 사용방법은 다음과 같다.시뮬레이터기준으로 진행하였다. 먼저 엑스코드에에서 Run버튼이 있는 위치를 오래 클릭하면 다음과 같은 메뉴가 나온다.. 더보기