В качестве демонстрации своей проблемы я создал небольшой пример: я создал новое приложение на основе представления, затем добавил кнопку в xib и подключил ее к IBAction. Тогда я написал этот класс:
#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, который не инициализируется, хотя я инициализирую этот NSArray в viewDidLoad. Как я мог заставить это работать для меня? Мне нужно инициализировать этот TaskGenerator после загрузки представления, а затем я буду использовать этот объект в различных методах.
Пожалуйста, помогите мне с этой проблемой.