Go to Organizer and click Projects tab,


and delete duplicate projects.


After opening a Xcode again,


it has indexed and works!!

xcode 4.2 에서 LLVM으로 컴파일러가 바뀌면서 armv6를 지원하지 않는데

그래서 그런가 버그가 종종 발견된다.

이번에 발견된 버그는 CGSize에 잘못된 값이 들어가는 현상!!

아이팟 2세대에서 확인해보니 유동적인 UI프레임이 엉망진창으로 배열되고 있었다. 

이 현상은 release/debug 모드가 아니라 appsotre 로 build 했을 때 발생했는데 

사람들은 컴파일러의 버그가 아닌가 예상하고 있다. 

그래서 임시방편으론 CGSize 변수를 한번 더 재정의 한것

sizeOfCell = CGSizeMake(sizeOfCell.width, sizeOfCell.height); 

이 현상은 CGPoint에서도 발생한다고 한다.

armv6를 지원하는 앱을 개발중이라면 고려해야할 부분이리라. 


>> Other C flags 에 -mno-thumb 을 주면 된다는데 맞낭? 
+설명

xcode4.2에서는 armv6를 지원하지 않으므로 빌드 셋팅에서 아키텍처에서 armv6를 추가해주면

왠만한건 잘 돌아가는데 앞에서 언급한 math관련 클래스들에서 문제가 발생.

LLVM compiler 3.0의 최적화 작업에서 문제가 생기는 것으로 추정.

LLVM compiler 3.0의 최적화 작업을 꺼 주는 옵션이 -mno-thumb

빌드 셋팅에서 Other C flags 항목에 이 옵션을 추가해주면 잘 돌아간단다.
(잘 안되면 clean을 한번 해주는 것이 ㅋㅋ)

아 구글링의 힘!! ㅋㅋ 

옵션을 줘도 되지만 그림과 같이 optimization level 단에서 debug/release/appstore을 분기 처리하면 더 안정된 서비스를 제공할 수 있을 듯.
armv6를 추가 하면 아래 그림과는 좀 다르게 바뀌는데 armv6냐 armv7이냐에 따라 optimization을 사용할지 none을 할지 설정하면 됨. 아 뭔가 오늘 아무것도 안한건 아니라서 좋구나 - 뭐... 결국은 과장님이 찾아내신거지만... 하나 건졌으니 좋아좋아!!

 
구글링하다가 어떤 사람 댓글을 읽었는데 아 뭔 말인지 모르겄다...

clarity and consistency = 명확성과 일관성을 위해 IBOutlets 는 모두 property 선언할 것을 권장한다.

첨에 뷰 로딩할 때 nib 파일을 setvalue:forkey: 형식으로 불려져서 세팅되는데

property를 retain으로 선언해놨는데 만일 뷰가 unloaded 라면 ... (아 영어와 한글을 같이 쓰는건 참 그렇다 ㅋ )

아직 뷰를 참조하고 있기 때문에 메모리 접근 문제가 생길 수 있음 ...

그래서 viewDidUnload 에 release 해야 한다네 -

(어떤 이의 말에 따르면 mac os x 에서는 멤버 변수가 default 가 no retained 라는데 

ios는 default 가 retained 라서 viewDidUnload 에서 release & set nil을 해줘야 한단다.

그렇게 명확하게 property 선언을 해놓으면 개발자가 헷갈리는 일도 없고 mac os x 와 ios 모두에서 공통적으로 사용(?)할 수 있는건가)

메모리 워닝이 발생하면 viewDidUnload 호출 후에 viewDidLoad 가 다시 호출듯 (정확하진 않음)

카메라 켜다가 자꾸 텍스트 날라가서 왜 그런가 했더니 메모리 워닝 두둥//

viewDidUnload에서  텍스트뷰 release & set nil 을 안했더니 메모리 워닝이 발생해도 텍스트는 남아있는데 왠지 찝찝하다 ㅎ;;

따로 저장해야되는건가 ;


어플을 지웠다가 다시 설치하니까 메모리 워닝 없이 잘 실행됨.

내부적으로 메모리 소모를 최소한으로 하고 워닝 발생 시 대비책을 마련해야겠다

어렵다 어려워 재밌다 재미나 ㅋ 
로컬에서 다음과 같이 호출하면 된단다...

[[UIApplication shareApplication] cancelAllLocalNotifications];
이 코드는 공개하면 안되니까 혼자 주저리 하는 글이에요 - 

맵뷰를 만들어서 뷰가 새로 뜰때마다 annotation을 뗐다 붙였다 하고 있지요

나름 메모리 해제도 잘 시켜줬다 생각했는데

어째서 viewDidAppear 에서 구현했을땐 memory leak 이 발생하고

viewWillAppear 에선 안 생길까...

폰의 차이일까....

고민중....

꼭 밝혀내고 말겐서 - 


====================================================================================


늘 발생하는 문제.
시스템 인스턴스 ( ex. UIScrollView, UITextField, UITableView, MKMapView and so on)를 사용할 때 자주 delegate를 세팅해준다.
객체를 모두 사용한 후 relese를 해도 retain property가 선언되어 있으면  객체가 바로 해제되지 않는데
이때 delegate 에 계속 시그널을 보내게 된다.
따라서 이미 객체가 있던 뷰컨트롤러/뷰 객체는 사라졌는데 시스템 객체가 살아있으므로 엉뚱한 곳을 향해 시그널을 보내고 있는 격. 그래서 짜잔~ 크래쉬!!
viewwilldisappear / viewdidunload 등에 object.delegate = nil 로 꼭 세팅을 해서 연결고리를 끊어주어야 한다.


ㅠ.ㅠ 전에는 테이블뷰한테 당했는데 오늘은 맵뷰한테 당했네 ㅋ 습관화 습관화 !! (아, 그리고 ios5부터 arc를 사용하고 있지만
시스템 인스턴스의 delegate는 weak가 아닌 assign으로 되어 있기 때문에 delegate = nil 은 꼭 세팅하라고 문서에 명시되어 있다.) 
iOS 5.0에서 추가된 notification 중에 UIKeyboardDidChangeFrameNotification 가 생겼다.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChanged:) name:UITextFieldTextDidChangeNotification object:nil];


// 이건 그냥 써보기 ㅋ
[[
NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardChanged:) name:UIKeyboardDidChangeFrameNotification object:nil];
 



Results :

2012-01-03 16:27:47.909 Empty[4705:10403] NSConcreteNotification 0x6eb69d0 {name = UIKeyboardDidChangeFrameNotification; userInfo = {

    UIKeyboardAnimationCurveUserInfoKey = 0;

    UIKeyboardAnimationDurationUserInfoKey = "0.25";

    UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";

    UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 588}";

    UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 372}";

    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";

    UIKeyboardFrameChangedByUserInteraction = 0;

    UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 264}, {320, 216}}";

}}
// userInfo 가지고 노닥노닥 하면 프레임이 바뀔때마다 재조정하기 편하지 않을까??

 

2012-01-03 16:29:08.342 Empty[4705:10403] NSConcreteNotification 0x6ed0750 {name = UITextFieldTextDidChangeNotification; object = <UITextField: 0x6ea8e50; frame = (0 100; 320 40); text = ''; clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x6ea8c50>>} 
// 텍스트필드에 입력되는 모든 글자가 text로 전달되어 온다.
// 마지막 키값은 따로 입력돼서 꼼수로 해결했었는데 이거면 해결할 수 있겠다 ㅎ 
페이스북 리스트 추가된 앱 북마크 기능

참고문서 : http://developers.facebook.com/docs/mobile/ios/build/

페이스북에서 제공하는 어플 북마크 기능+_+
개발자가 만든 app을 페이스북 개발자사이트에 등록하고
app을 받은 유저가 페이스북 접근을 허용하면
이후에 페이스북 북마크 리스트에 app이 등록됩니다.

app이 device에 존재하면 선택 시 바로 실행시켜주고
존재하지 않으면 앱스토어로 연결된다지요:)

자, 그럼 지금부터 어떻게 요놈을 설정하는지 그 과정을 파헤쳐 보시겠숨돠!!+_+ 

페이스북에서의 설정
developer.facebook.com > ( sign up ) > apps
위의 경로로 접근합니다. 꾸물대지 말고 어서 합니다. 무작정 따라하기처럼 따라합니다.
앱이 등록되어 있어야 북마크를 하겠지요잉? ㅋㅋ

없는 분들 오른쪽 끝에 create new app 버튼 눌러서 만드시옵소서
그럼 앱에서 페이스북 연동을 하고 페이스북에 앱이 등록되어 있다는 전제 하에 설명하겠습니다요

edit app 을 선택해서 수정할 정보 있으면 하시고 ~
제가 관심있는 건 아래쪽에 native iOS app 탭이랍니다


iOS Bundle ID : xcode에서 appname-Info.plist 파일에 있는 com.company.appname 형식을 입력,
iphone/ipad app store id : 입력하면 어플이 설치되어 있지 않을 시 앱스토어로 연결 / 애플 개발자 페이지에서 확인 ( 앱스토어 링크 주소로 확인가능  >> 링크의 id이후의 숫자),
url scheme suffix : facebook app id를 공유하는 앱이 두 개 이상일 경우(예를 들어 테스트버전?), suffix 를 두어 구별할 수 있음 
그리고 (밑줄쫙 별표땡땡) Configured for iOS SSO 항목은 enabled로 선택하면 페이스북에서의 설정 끝!!

아이폰 앱 프로젝트 파일에서의 설정
프로젝트 파일 중 appname-Info.plist 파일이 있습니다.
아래의 경로를 따라가서 페북 앱 아이디를 입력해 줍시다 톡톡톡
URL types > item0 > URL Schemes > Item 0 (꼭 0번째일 필요없음) > fb{facebook에서 앱에 제공하는 id} 를 입력
ex. fb100000000000000 => 앱 아이디는 페이스북 개발자 페이지의 앱 상세 정보에서 확인할 수 있습니다.
ex. fb100000000000000suffix => 옵션 중에 URL Scheme Suffix 가 존재할 경우 예제와 같이 입력합니다.

볼수록 몰랐던 옵션들을 알게 되는 듯.
공부합시다 ㅋㅋㅋㅋㅋ 


    [self.tabBarController.tabBar setFrame:CGRectMake(0, 431, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height)];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationCurve:UIViewAnimationOptionTransitionCurlUp];
    [self.tabBarController.tabBar setFrame:CGRectMake(0, 480, self.tabBarController.tabBar.frame.size.width, self.tabBarController.tabBar.frame.size.height)];
    [UIView commitAnimations];

XCode 4.2 에서 .dSYM 파일이 안보인다.

구글링 디적디적 오마낫 +_+

archive 파일을 생성하면 같은 폴더에 xcarchive 라는 패키지 파일이 같이 생성되는데

요기 안에 딱 ! 들어가 있돠

오른쪽 버튼 클릭해서 패키지 보기 하거나 터미널로 보면 나온당 -

왜 숨어있었엉 ㅠ 한참 찾았자낭 ㅠ 
I added image files to my project and I deleted all.

After removing, warnings appeared. 

The message 
"Missing file" showed up and I figured it out.
Here is a solution.

in terminal :
your project path > svn delete filepath


 That's all.

warnings were disappeared. BuyBuy~:p

+ Recent posts