代码在模拟器上运行良好,但在真实设备上却为零
code works fine on emulator but getting nil on real device
这段代码工作正常,当我在模拟器上测试这段代码时我得到了按钮,但是当我在真实设备上测试时我得到了 nil。
按钮在头文件接口中声明
@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) 按钮始终为零。我在调试时注意到在 运行ning 最后一行之后
执行回到
CGFloat screenHeight = screenRect.size.height;
又开始了,顺便说一句,这里没有循环代码。我无法理解这种现象。我在这里错过了什么。
代码 1 :
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]
)。
希望对您有所帮助。
您对按钮的引用很弱,因此在您将其添加为子视图之前它已被释放。您可以将其更改为具有强引用:
@property (nonatomic, strong) UIButton *button;
或者在将按钮添加到视图时保留对按钮的引用:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.view addSubview:myButton];
_button = myButton;
它现在由视图保留,因此不会被释放。
这段代码工作正常,当我在模拟器上测试这段代码时我得到了按钮,但是当我在真实设备上测试时我得到了 nil。
按钮在头文件接口中声明
@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) 按钮始终为零。我在调试时注意到在 运行ning 最后一行之后 执行回到
CGFloat screenHeight = screenRect.size.height;
又开始了,顺便说一句,这里没有循环代码。我无法理解这种现象。我在这里错过了什么。
代码 1 :
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]
)。
希望对您有所帮助。
您对按钮的引用很弱,因此在您将其添加为子视图之前它已被释放。您可以将其更改为具有强引用:
@property (nonatomic, strong) UIButton *button;
或者在将按钮添加到视图时保留对按钮的引用:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.view addSubview:myButton];
_button = myButton;
它现在由视图保留,因此不会被释放。