作爲我的問題的演示,我創建了一個小例子:我創建了一個新的基於視圖的應用程序,然後將按鈕添加到xib並將其連接到一個IBAction。然後我寫了這個類:Objective C中對象初始化的問題C
#import <Foundation/Foundation.h>
@interface TaskGenerator : NSObject {
NSArray* mathPictures;
}
- (TaskGenerator*)init;
@property(retain,nonatomic) NSArray* mathPictures;
@end
#import "TaskGenerator.h"
@implementation TaskGenerator
@synthesize mathPictures;
- (TaskGenerator*)init
{
self = [super init];
if (self)
{
mathPictures = [NSArray arrayWithObjects:@"0.png",@"1.png",@"2.png",@"3.png",@"4.png",@"5.png",nil];
}
return self;
}
@end
然後我修改了創建的viewController:
#import <UIKit/UIKit.h>
#import "TaskGenerator.h"
@interface NechapackaViewController : UIViewController {
TaskGenerator *taskGen;
}
-(IBAction)vypis:(id)sender;
@property(nonatomic,retain) TaskGenerator *taskGen;
@end
#import "NechapackaViewController.h"
#import "TaskGenerator.h"
@implementation NechapackaViewController
@synthesize taskGen;
- (void)viewDidLoad {
taskGen = [[TaskGenerator alloc] init];
printf("%d\n",[taskGen.mathPictures count]);
[super viewDidLoad];
}
-(IBAction)vypis:(id)sender
{
printf("%d\n",[taskGen.mathPictures count]);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)dealloc {
[super dealloc];
}
@end
我不明白是爲什麼,點擊按鈕後,有一個與NSArray的一個問題,雖然我在viewDidLoad中初始化了這個NSArray,但它並未初始化。我怎麼能讓它爲我工作?我需要在加載視圖後初始化此TaskGenerator,然後我將以各種方法使用此對象。 請幫我解決這個問題。
當問一個問題,你應該張貼,你得到什麼錯誤或意外的結果,以及崩潰日誌,如果你的程序崩潰。你說數組沒有被初始化,但不是*會發生什麼。 – ughoavgfhw 2011-03-27 00:06:53