Это классическая проблема.
Я хотел бы получить доступ к массиву объектов из любого места в моем приложении.Я также хотел бы сделать это с помощью синглтона.Мои вопросы:
- Где создать экземпляр моего одноэлементного объекта?
- Где создать экземпляр массива объектов NSMutable?
- Как мне обратиться к этому массивуоткуда-нибудь в моем проекте?
Весь код и примеры очень ценятся!
РЕДАКТИРОВАТЬ 1
Это то, что я до сих пор,Я не могу понять, как правильно и последовательно получить доступ к этому массиву бананов:
#import <Foundation/Foundation.h>
@interface Singleton : NSObject {
NSMutableArray *bananas;
}
@property (nonatomic, retain) NSMutableArray *bananas;
@end
#import "Singleton.h"
static Singleton *mySingleton;
@implementation Singleton
@synthesize bananas;
#pragma mark SingletonDescption stuff
+ (Singleton *)mySingleton
{
if(!mySingleton){
mySingleton = [[Singleton alloc]init];
}
return mySingleton;
}
+ (id)allocWithZone:(NSZone *)zone
{
if (!mySingleton) {
mySingleton = [super allocWithZone:zone];
return mySingleton;
} else {
return nil;
}
}
- (id)copyWithZone:(NSZone*) zone
{
return self;
}
- (void)release
{
// NO OP
}
@end
РЕДАКТИРОВАТЬ 2
Вот как я пытаюсь использоватьмой одноэлементный объект, чтобы иметь массив объектов, помещенных в ячейку таблицы.Ничего не происходит, и ячейка таблицы становится пустой: (* 1026 *
- (id)init
{
[super initWithStyle:UITableViewStylePlain];
// bananas = [[NSMutableArray alloc] init];
Singleton *mySingleton = [[Singleton alloc]init];
mySingleton.bananas = [[NSMutableArray alloc]init];
UIImage *imageA = [UIImage imageNamed:@"A.png"];
UIImage *imageB = [UIImage imageNamed:@"B.png"];
UIImage *imageC = [UIImage imageNamed:@"C.png"];
Banana *yellowBanana = [[Banana alloc] initWithName:@"Yellow" description:@"Beautiful" weight:22.0 icon:imageA];
Banana *greenBanana = [[Banana alloc] initWithName:@"Green" description:@"Gorgeous" weight:12.0 icon:imageB];
Banana *rottenBanana = [[Banana alloc] initWithName:@"Rotten" description:@"Ugly" weight:8.0 icon:imageC];
[mySingleton.bananas addObject:yellowBanana];
[mySingleton.bananas addObject:greenBanana];
[mySingleton.bananas addObject:rottenBanana];
}