viewDidAppear: 에서 view 를 닫게 하였을때 발생함.

보여지는 과정이 끝난 직후에 발생한 메소드라 이곳에서 안보여지게 하는 코드를 사용하면 발생하는 듯.

performSelector:withObject:afterDelay: 를 이용해 0.1 초 후에 동작시켜 해결함.

"viewController implementation of -viewDidUnload caused the view to be reloaded. This will adversely impact system performance."


low memory warning 시에 이런 메세지가 뜬다면, viewController 의 viewDidUnload 의 코드중에 view 를 다시 load 하게 만드는 코드가 존재하는 것이다.


self.view

self.tableView


이런식의 코드들은 view 를 다시 load 하게 만드므로 viewDidUnload 에는 넣지 말도록 하자.


UITableView 의 배경색을 바꾸면 iPhone 에서는 정상 적용이 되나 iPad 에서는 기본값으로 나온다.

tableView 의 backgroundView 에 빈 view 를 하나 생성해주면 된다.


UIView *view = [[UIView alloc] init];

self.tableView.backgroundView = view;

[view release];


svn 커맨드에서 파일명에 @2x 가 붙은 것들에 대해 제대로 동작하지 않는다.

아래처럼 하면 적용이 된다.


1. 개별적용

뒤에 "@" 을 붙이면 된다.


svn add 파일명@


2. 일괄적용

"do" ~ ";" 부분은 실제 명령행으로 적절히 바꾸면 된다.


for f in *@2x.png; do svn add $f@; done




UIButton 을 터치하여도 UITapGestureRecognizer 만 반응을 한다.

UITapGestureRecognizer 에 연결된 메소드에 다음을 넣어주면 나머지에서도 반응을 할 수 있다.


tapRecognizer.cancelsTouchesInView = NO;


tapRecognizer 대신 메소드의 첫 인자로 넘어온 객체를 넣어주면 된다.

속성 이름을 보니 뷰에서 터치 취소를 하지 않겠다는 의미같다.

Archive 과정은 분명히 잘 따라하여 실제 in-house 배포까지 해보았다.

그런데 며칠 뒤에 다시 하는데 Archive 는 문제없이 진행이 되었는데 Organizer - Archive 에 등록이 되지 않는다.

stackoverflow.com 의 같은 내용의 글의 댓글에서 찾을 수 있었다.


http://stackoverflow.com/questions/5280914/archive-does-not-appear-in-xcode4-organizer

http://stackoverflow.com/questions/5265772/archives-not-showing-up-in-organizer-for-xcode-4


scheme 부분에서 확인할 것들은 그냥 보기만 해도 알 것 들이어서 이미 확인이 되었는데,

빌드설정에서 문제가 있었다.


Target - Build Settings - Deployment 부분의 설정이 좀 바뀌어있었다.

Installation Directory = /Applications

Skip Install = No


Skip Install 부분은 다른 깨끗한 프로젝트와의 비교로 확인 후 수정을 하였던 것인데 Installation Directory 는 미쳐 발견하지 못하였다.

역시, 문제가 생기면 새 프로젝트를 만들어서 기본값을 확인하는 것도 좋은 해결방법인 것 같다.


[[NSBundle mainBundle] pathForResource:@"filename" ofType:@"ext"]


분명히 파일을 추가하여 트리에도 나오는데 경로가 계속 nil 이 된다.

확인 결과 파일을 추가할 때 옵션의 문제이다.

Add to targets 에 target 에 대한 체크가 빠져있었다.

추가된 파일을 제거하고 다시 등록하면서 target 설정을 해주니 잘 동작한다.

다른 방법이 있어 추가한다.
Organizer - Projects 에서 해당 프로젝트를 제거한 후 xcode 에서 프로젝트를 다시 열면 된다.
다시 열 때 Organizer - Projects 에도 다시 등록된다.


코드를 수정하던 중, 또는 소스를 다시 받았을 경우 "Code highlight" (또는 "Code coloring") 이 동작하지 않는 경우가 있다.

하얀색 글자들을 바라보자니 정신이 혼미해진다.

해결방법은 Header 탐색 경로를 수정하면 된다.


1. Project - Build settings - Search Paths 로 이동

2. Header Search Paths 에 "$(SRCROOT)/**" 을 추가한다.

3. 잠시 대기


이렇게 해도 해결이 안되면 다음 원문의 3번 부터 따라해보자.

원문: http://stackoverflow.com/questions/2138047/xcode-code-loses-syntax-coloring

Apple Mach-O Linker (id) Error
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1


사례1. 헤더에서 변수를 생성하고, 이 헤더를 두군데 이상에서 포함시켰을 경우.

NSStringEncoding defaultEncoding = NSUTF8StringEncoding;

.m 파일에 있던 이 코드를 수정하던 도중 .h 에 옮기는 실수를 하였다.
C/C++ 의 경우라면 아무 문제없이 컴파일이 되지만 서로 다른 변수가 생겨 오동작이 되었을 경우다.
그러나 xcode 에서는 clang 에서 오류를 발생시킨다.

해당 코드는 .m 작성하고 .h 파일에
NSStringEncoding defaultEncoding;
을 넣어 참조하도록 하자.
[[NSThreaed alloc] initWithTarget:self selector:@selector(method) object:obj];

- (void)method:(NSData *)data
{
}


실행시 method 가 없다고 에러난다. 
method 에는 인자값이 하나가 있으므로 @selector(method:) 로 명시해줘야한다.
 

+ Recent posts