2016-06-16 5 views
0

이 코드는 잘 작동하며 버튼을 얻는 동안 에뮬레이터에서이 코드를 테스트하지만 실제 장치에서는 테스트 할 때 아무 것도 얻지 못합니다.
버튼이 내가이 프로그램을 실행할 때 내가이코드는 에뮬레이터에서 정상적으로 작동하지만 실제 장치에서는 nil이 발생합니다.

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 

screenHeight = screenHeight - 135; 

//Call 
button = [UIButton buttonWithType:UIButtonTypeCustom]; 

을하고있는 중이 함수 호출에

@synthesize button; 

다음 구현 파일에 합성

@property (weak, nonatomic) UIButton *button; 

다음 헤더 파일 인터페이스에 선언 실제 장치 (iphone 5) 코드는 버튼이 항상 nil입니다. 그 디버깅하는 마지막 줄을 실행 한 후 실행이

CGFloat screenHeight = screenRect.size.height; 

로 돌아갑니다 동안 발견하고 나는이 현상을 이해하지 못할 .. 여기에는 루프 코드가없는 그런데, 다시 시작했다. 내가 여기서 무엇을 놓치고 있니?

+0

코드는 어디에서부터 메서드를 호출합니까? – Larme

+0

무슨 일이 일어나고 있는지 보려면 여기에 충분한 코드가없는 것 같습니다. 어떻게 단추가 선언 되었습니까? 스토리 보드를 사용하고 계시거나 프로그래밍 방식으로 만들었습니까? – Dominic

+0

스토리 보드를 사용하지 않고 만든 후 프로그래밍 방식으로 하위보기로 추가하고 있습니다. – Saifee

답변

2

약한 참조가 있으므로 하위보기로 추가하기 전에 할당이 해제됩니다.

@property (nonatomic, strong) UIButton *button; 

또는 당신이보기에 추가하는 동안 버튼에 대한 참조를 유지 :

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.view addSubview:myButton]; 
_button = myButton; 

그것은 그래서 지금 '원 뷰에 의해 유지되고 당신은 강한 참조가 그것을 변경할 수 있습니다 풀려나.

1

코드 1 :

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 

screenHeight = screenHeight - 135; 
button = [UIButton buttonWithType:UIButtonTypeCustom]; 

CODE2 :

CGRect rect = CGRectMake(10, 10, 10, 10); 
CGFloat a = rect.size.width; 
CGFloat b = rect.size.height; 

b = b - 1; 
button = [UIButton buttonWithType:UIButtonTypeCustom]; 

내가 코드 1 실행하고 장치 CODE2, 나는

코드 1이 CGFloat screenHeight = screenRect.size.height;

및 CODE2로 돌아갈 것을 발견 마지막 줄을 실행 한 후 돌아 가지 않습니다.

기기 효율이나 기능 ([[UIScreen mainScreen] bounds])과 관련이 있을지도 모릅니다.

희망이 있습니다.

+0

당신이 사형 집행을 잡은 덕분에이 문제가 해결되지 않았습니다. – Saifee

관련 문제