这段代码工作正常,我在模拟器上测试此代码时得到按钮,但是当我测试真实设备时,我得到了n。 按钮在头文件界面中声明
@property (weak, nonatomic) UIButton *button;
然后它在实现文件
中合成@synthesize button;
然后在函数调用中我正在做这个
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
screenHeight = screenHeight - 135;
//Call
button = [UIButton buttonWithType:UIButtonTypeCustom];
当我在真实设备(iphone 5)上运行此代码时,该按钮始终为零。我在运行最后一行后调试时注意到了 执行回到
CGFloat screenHeight = screenRect.size.height;
并重新开始,顺便说一下这里没有循环代码。我无法理解这种现象。我在这里失踪了什么。
答案 0 :(得分:2)
您对按钮的引用较弱,因此在将其添加为子视图之前,它会被取消分配。您可以将其更改为具有强大的参考:
@property (nonatomic, strong) UIButton *button;
或者在将视频添加到视图时保留对该按钮的引用:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.view addSubview:myButton];
_button = myButton;
它现在由视图保留,因此不会被释放。
答案 1 :(得分: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]
)。
希望它有所帮助。