2016-06-16 17 views
0

このコードはうまく動作していますが、私はこのコードをエミュレータでテストしていますが、
ボタンは、それが私がこれを実行したときに、私はこのコードはエミュレータで正常に動作しますが、実際のデバイスではゼロになっています

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

CODE1:

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

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

コード2:

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

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

私はCODE1実行して、デバイスでCODE2が、私は

CODE1がCGFloat screenHeight = screenRect.size.height;

とCODE2に戻りますことを見つけます最後の行を実行した後に戻りません。

デバイスの効率や機能([[UIScreen mainScreen] bounds])について多分何か関係があると思います。

希望します。

+0

あなたは実行の事をキャッチしたが、これは問題を解決しなかった。 – Saifee

関連する問題