Если ваш r
объявлен локально (как кажется, судя по вашему фрагменту), то к нему нельзя получить доступ вне его области (здесь: метод, в котором он был объявлен).
Вам также нужно сделать его доступным в вашем экземпляре класса, объявив его иваром.
Объявление этого ивара будет выглядеть так:
@interface YourClass : SuperClass {
GADRequest *request;
}
//...
@end
Затем вы изменяете свой код на это:
request = [[GADRequest alloc] init];
request.testing = YES;
[bannerView_ loadRequest:request];
Также не забудьте выпустить его в dealloc
:
- (void)dealloc {
[request release];
//...
}
Однако это , а не , что вы хотите в этой ситуации (я только что включил его, чтобы пояснить, почему вы получаете предупреждение о том, что r
не объявляется).
Вам (скорее всего) не понадобится request
в любой второй раз после запуска вашего сниппета, таким образом, хранение его в иваре только излишне займет ОЗУ и добавит ненужную сложность вашему классу. Материал, в котором вы нуждаетесь только сразу после его создания, должен быть соответствующим образом обработан (выпущен), что находится в той же области действия.
То, что вы на самом деле хотите сделать, это просто (автоматически) отпустить его , должным образом позаботившись об этом.
Имейте в виду, что вашему loadRequest:
потребуется позаботиться о сохранении r
в течение до тех пор, пока это необходимо . Реализация Apple делает это , конечно. Но вы, возможно, захотите написать подобный метод самостоятельно, поэтому помните об этом затем.
GADRequest *r = [[GADRequest alloc] init];
r.testing = YES;
[bannerView_ loadRequest:r];
[r release]; //or: [r autorelease];