![](/img/trans.png)
[英]How to know if a number is larger then the maximum value in iphone objective-c
[英]Objective-c Iphone how to set default value for a property
您好我在ViewController.h中有以下代碼:
#import <UIKit/UIKit.h>
@interface CalcViewController : UIViewController {
NSNumber* result;
NSString* input;
//NSString* input = @"";
IBOutlet UITextField* display;
}
@property (retain) NSNumber* result;
@property (retain) NSString* input;
@property (nonatomic, retain) UITextField* display;
@end
問題是我想在輸入中附加一個字符串,但是當它仍為空時這是不可能的。 這就是為什么我想將輸入的默認值設置為@“”。 但是我在哪里放這個代碼。
我知道一個可能的解決方案,你把它放在一個默認的構造函數中。 但我不知道在哪個文件中放這個。 我應該在哪里打電話。
遺憾的是,我對C的理解有限,並且意識到也許.h文件不是正確的地方。
如果您需要,項目類型是基於視圖的應用程序。
希望你能幫忙。
您可能會發現閱讀Objective-C或Cocoa上的一些文檔很有用。 如果您在StackOverflow或Google上執行搜索,您可能會在閱讀材料上找到一些很好的建議。
要回答你的問題,你應該有一個@implementation of CalcViewController。 人們通常會將此@implementation放在* .m文件中。 如果您的* .h文件名為“ViewController.h”,那么實現將進入“ViewController.m”。
然后,您將創建UIViewController的初始化函數的副本並將其放在那里(我不知道默認的init函數是什么)。
例如:
@implementation CalcViewController
@synthesize result;
@synthesize input;
- (id)initWithNibName:(NSString*)aNibName bundle:(NSBundle*)aBundle
{
self = [super initWithNibName:aNibName bundle:aBundle]; // The UIViewController's version of init
if (self) {
input = [[NSString alloc] initWithString:@""]; // You should create a new string as you'll want to release this in your dealloc
}
return self;
}
- (void)dealloc
{
[input release];
[super dealloc];
}
@end // end of the @implementation of CalcViewController
筆記:
編輯: 2009年4月28日:美國東部時間上午10:20:我建議實際分配一個NSString,因為你應該在dealloc技術上釋放它。
編輯: 2009年4月28日:美國東部時間上午11:11:我更新了@implementation以使用UIViewController的init版本。
非常好的問題。 簡短的回答是在init函數中初始化值。 您需要覆蓋默認的init函數,以便在使用對象之前准備好默認值。 我想建議人們不要建議其他人閱讀文件; 如果可以,請直接回答問題。
另一種選擇是為輸入屬性編寫自己的getter,如果實例變量為nil則返回@“”。 即使您意外或故意將nil分配給輸入,這也會起作用,而使用init設置默認值會中斷。
最明顯的實現方式如下:
在viewcontroller.m文件中,覆蓋默認的init方法。 每次初始化視圖控制器時都會調用此方法。 因此,這是初始化變量的最佳方式。
- (id)initWithNibName:(NSString*)aNibName bundle:(NSBundle*)aBundle { self = [super initWithNibName:aNibName bundle:aBundle]; // The UIViewController's version of init if (self) { varName = [[NSString alloc] initWithString:@""]; } return self; }
現在,在您的代碼中,您想要將字符串附加到原始字符串,只需使用: varName = [NSString stringwithformat:@"%@%@", varName, newString];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.