0
NSMutableArray에 중대한 문제가 있음을 알았습니다. 아마도 나는 정말 분명한 것을 놓치고있을 것입니다. 아마도 나는 그것을 볼 수 없을 정도로 많이 보았을 것입니다. 그것은 완벽하게 작동 나는 등 할 개체를 검색, 내가 그것을 표시 한 코드 내에서 배열을 볼 수 있습니다NSMutableArray는 비어 있지만 채워집니다.
@synthesize testArray;
- (void)viewDidLoad{
[super viewDidLoad];
testArray = [[NSMutableArray alloc] init];
TWRequest *request = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://search.twitter.com/search.jsonq=kennedy&with_twitter_user_id=true&result_type=recent"]
parameters:nil requestMethod:TWRequestMethodGET];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if ([urlResponse statusCode] == 200) {
// The response from Twitter is in JSON format
// Move the response into a dictionary
NSError *error;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];
NSArray *results = [dict objectForKey:@"results"];
//Loop through the results
for (NSDictionary *tweet in results) {
tweetStore *tweetDetails = [[tweetStore alloc] init];
NSString *twitText = [tweet objectForKey:@"text"];
//Save the tweet to the twitterText array
tweetDetails.name = @"test";
tweetDetails.date = @"test";
tweetDetails.tweet = twitText;
[testArray addObject:tweetDetails];
}
tweetStore *retrieveTweet = (tweetStore*)[testArray objectAtIndex:0];
NSLog(@"tweet is: %@", retrieveTweet.tweet);
//NSLog(@"Array is: %@", testArray); - *can* view Array etc here
}
else {
NSLog(@"Twitter error, HTTP response: %i", [urlResponse statusCode]);
}
}
];
NSLog(@"test array: %@", testArray); //Array is now empty......
}
:
가있는 NSMutableArray를 채우는 결과를 사용하여 다음 몇 가지 트윗을 읽고 있습니까 . 하지만이 배열 밖에서 배열에 액세스하거나 표시하려고하자마자 비어있는 것처럼 보입니다. 어떤 도움이나 조언을 부탁드립니다.
콜백 블록을 사용하여 비동기 호출을하고 있습니다. 요청이 완료되면 배열이 채워지지만 응답을받은 후가 아니라 "언젠가는 미래에"완료되도록 호출을 설정 한 직후에 체크합니다. –
@JoachimIsaksson에 동의합니다. 그것은 타이밍 문제입니다. – trojanfoe
그것의 해제/할당 해제 점점 .. –