Я создаю экземпляр класса с именем S3ObjectController (S3OC), который имеет один метод и четыре метода делегата. Я создаю экземпляр моего S3OC, вызываю метод экземпляра из класса S3OC (который, как я знаю, запускается из операторов NSLog), но ни один из связанных методов делегата не вызывается в классе S3OC. У меня в методе установлен делегат self, а в заголовке .h делегат объявлен правильно.
Мысли? просто чтобы быть понятным, это (void) методы запроса в файле .m ниже, я думаю, должны быть вызваны, которые не. Я получаю ошибки EXC BAD ACCESS. ARC освобождает себя?
Весь файл .m класса S3OC представлен ниже:
#import "S3ObjectController.h"
@implementation S3ObjectController
@synthesize string;
@synthesize s3GOR, s3Client;
-(void)method
{
NSLog(@"Method Called");
s3Client = [[AmazonS3Client alloc] initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
s3GOR = [[S3GetObjectRequest alloc]initWithKey:string withBucket:[Constants pictureBucket]];
[s3GOR setDelegate:self];
[s3Client getObject:s3GOR];
NSLog(@"Method Finished");
}
-(void)request:(AmazonServiceRequest *)request didFailWithError:(NSError *)error
{
NSLog(@"Error %@",error);
}
-(void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"Response Key %@", response);
}
-(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data
{
NSLog(@"ObjectRequestKey = %@",request);
}
-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response
{
NSLog(@"Final Delegate Method");
}
Вот заголовок: "
@interface S3ObjectController : NSObject <AmazonServiceRequestDelegate>{
NSMutableData *responseData;
NSString *string;
AmazonS3Client *s3Client;
S3GetObjectRequest *s3GOR;
}
-(void)method;
@property (nonatomic, strong) NSString *string;
@property (nonatomic, strong) S3GetObjectRequest *s3GOR;
@property (nonatomic, strong) AmazonS3Client *s3Client;
@end
Наконец, вот как я вызываю метод в другом классе:
for (NSString *name in nameArray){
@try {
S3ObjectController *localS3 = [[S3ObjectController alloc]init];
localS3.string = name;
[localS3 method];
NSLog(@"called");
}