我有一個自定義類Custom.mm,我試圖在我的控制器類MainController中使用setter設置浮動值。 Custom實例被鍵入爲一個id,因爲它是一個Obj-C++文件,並且在編譯時指向一個合適的類對我來說工作得很好。一切正常,實例已驗證。如果我將int變量設置爲int類型,並通過ints,則它可以正常工作。與任何其他值或對象相同 - 除了浮動。由於某些原因,Float(float,CGFloat等)在Custom.mm類中被設置爲0。這不是NSLog或其他任何問題 - 我已經用斷點檢查了數量變量,並且所有東西都可以正常工作,但卻是浮動的。CGFloats,浮動設置爲零
//Custom.h
@interface Custom : UIView
{
CGFloat amount;
}
@property CGFloat amount;
@end
//Custom.mm
@implementation Custom
@synthesize amount;
- (id) initWithCoder:(NSCoder*)coder
{
if ((self = [super initWithCoder:coder]))
{
//set initial value to 1
self.amount = 1.0; //verified as 1.0
}
return self;
}
//MainController.h
@interface MainController : UIViewController
{
IBOutlet id customInstance; //IB points to the CustomView class
}
//MainController.m
@implementation MainController
-(void)viewDidLoad
{
[super viewDidLoad];
//Checking this value in Custom.mm via the debugger shows it as being 0,
//when before it was 1.0.
[customInstance setAmount:2.0];
}
@end
你能分享失敗的實際源代碼嗎?當正確執行金額= 1行時,您如何「在Custom.mm中檢查此值」? – drewh 2011-02-16 01:19:35
使用點符號時會發生同樣的事情:`customInstance.amount = 2.0`? – 2011-02-16 01:39:15
@drewh amount = 1在初始化時被設置。我使用調試器以及日誌記錄來檢查這些值。 – akaru 2011-02-16 05:03:04