Как я могу иметь постоянное представление в iOS? - PullRequest
1 голос
/ 14 октября 2011

Мы используем UInavigationController с одним из представлений, который воспроизводит звуковые дорожки.

Мы используем среду AVfountation.

Переходим к аудиолисту (где воспроизводится музыка) на кнопкенажмите

-(IBAction)audioBtnClicked
{
    audiolist *audio=[[audiolist alloc] initWithNibName:@"audiolist" bundle:nil];
    [self.navigationController pushViewContrller:audio animated:YES];
    [audiolist release];
}

Когда пользователь воспроизводит музыку и уходит, музыка продолжает воспроизводиться

Проблема: , когда пользователь возвращается к списку песен и воспроизводит другуюдорожка, одновременно воспроизводятся 2 песни.

Мы думаем, что новый экземпляр audiolist создается при каждом переходе пользователя назад.Мы хотели бы иметь только один экземпляр audiolist.Как сделать первый экземпляр audiolist постоянным и как мы на него ссылаемся?

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Вы должны сделать

[audio release];

а не

[audiolist release];

Аудиолог, кажется, ваше имя класса. Соглашения об именах говорят, что классы должны быть заглавными и в верблюжьих, поэтому это должен быть AudioList Это сделает ваш код более читабельным.

Чтобы иметь один общий экземпляр вашего AudioList, вы можете сделать это:

Добавьте метод класса в свой заголовок:

+ (AudioList *) sharedInstance;

затем добавьте это в ваш файл реализации:

@implementation AudioList

static AudioList *gSharedInstance = nil;

+ (AudioList *) sharedInstance {
    if (gSharedInstance == nil) {
        gSharedInstance = [[AudioList alloc] init];
    }

    return gSharedInstance;
}

Теперь вы всегда можете получить доступ к этому экземпляру с помощью

[AudioList sharedInstance];

Приветствие.

0 голосов
/ 14 октября 2011

Создайте одноэлементный класс AudioManager, который обрабатывает всю вашу музыку. Когда вы перейдете к этому контроллеру представления, возьмите общий экземпляр этого AudioManager и сделайте все, что вы делаете в этом представлении.

Вы не хотите, чтобы представление сохранялось, поскольку это было бы плохим разделением MVC.

В Apple обсуждаются различные шаблоны проектирования и их реализации с целью, включая синглтон:

http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html#//apple_ref/doc/uid/TP40002974-CH6-SW6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...