В вашем классе (классе, соответствующем протоколу и получающем обратный вызов), объявите переменную экземпляра и свойство для NSMutableArray (или вы можете преобразовать его в массив, если он не изменится снова после того, как вы впервые его получите).
Когда вызывается ваш метод делегата, присвойте свой portArray свойству класса перед возвратом. Затем ваш экземпляр класса имеет ссылку на portArray, к которому может обращаться любой метод в вашем классе. Вам не нужно явно выделять / инициализировать массив для этого, потому что у вас уже есть массив в памяти к моменту завершения вашего метода обратного вызова - назначение массива вашему свойству класса сохраняет его, тем самым подтверждая владение за пределами области действия. обратный вызов делегата.
Вы можете вызывать свой собственный метод из обратного вызова делегата (receiveString), и он будет иметь доступ к вашему массиву.
В вашем заголовке (myClass.h):
@interface myClass <ConformsToReceivedStringProtocol>
{
@private
NSMutableArray *portArray_;
}
@property (nonatomic, retain) NSMutableArray *portArray;
-(void) myMethodThatUsesPortArray;
В вашей реализации (myClass.m)
@implementation myClass
@synthesize portArray = portArray_;
-(NSArray *) receivedString:(NSString *)string
{
//do everything you're already doing
NSMutableArray *myPortArray;
[self setPortArray:myPortArray];
[self myMethodThatUsesPortArray];
return myPortArray;
}
-(void) myMethodThatUsesPortArray
{
//do whatever you want with
NSMutableArray *myArray = [self portArray];
}
//don't forget to release the property
-(void) dealloc
{
[self setPortArray:nil];
[portArray_ release];
[super dealloc];
}
Последний вариант - просто передать массив вашему собственному методу непосредственно перед возвратом, избегая необходимости определять ivars и свойства, но требуя, чтобы вы управляли памятью массива самостоятельно:
- (void) myMethodThatUsesArray:(NSMutableArray *)portArray
{
[portArray retain];
//do something with portArray and then release ownership
[portArray release];
}
-(NSArray *) receivedText:(NSString *)string
{
//assume we have a myPortArray (balanced in memory)
[self myMethodThatUsesArray:myPortArray]
return myPortArray;
}