0

TWRequest で ARC を使用しています。Twitter からの検索が正常に返され、結果の配列が作成されました。これが私のコードです...

NSArray *results = [dict objectForKey:@"results"];

//Loop through the results
NSMutableArray *twitterText = [[NSMutableArray alloc] init];

for (NSDictionary *tweet in results)
{
    // Get the tweet
    NSString *twittext = [tweet objectForKey:@"text"];

    // Save the tweet to the twitterText array
    [twitterText addObject:twittext];
}
NSLog(@"MY ************************TWITTERTEXT************** %@", twitterText );

私の質問は、後で cellForRowAtIndexPath の下の .m ファイルで twitterText を使用したいのですが、(上記のように) ループが終了するとすぐに、ARC の下でリリースされます。

.h ファイルでプロパティをストロングに設定しました (ループの直前に上記で宣言するだけでなく、それができるかどうかはわかりませんが、上記のように宣言しないと twitterText は NULL を返します)。

上記のようにループの直後にログを印刷すると、twitterText Array は正常に印刷されますが、同じ Log in cellForRowAtIndex パス メソッドは空白を返します。ほとんど存在を忘れているようです。どんな助けでも大歓迎です。ありがとう。アラン

4

2 に答える 2

1

変数 twitterText をローカル コンテキストで宣言しています。したがって、メソッドが完了した後、ARCはそれをドロップしています。そのメソッドのスコープ外で使用したい場合は、このように宣言する必要があります。

.h
@property (nonatomic, strong) NSMutableArray *twitterText;

.m
@synthesize twitterText = _twitterText; // ivar optional

_twitterText = [[NSMutableArray alloc] init];

for (NSDictionary *tweet in results) {
    // Get the tweet
    NSString *twittext = [tweet objectForKey:@"text"];

    // Save the tweet to the twitterText array
    [_twitterText addObject:twittext];
}


-(void)someOtherMethod {
    NSLog(@"twitterText: %@", _twitterText);
}
于 2012-07-10T13:37:15.403 に答える
0

NSMutableArray *twitterText @property関数のライフサイクルの終了後にリリースされることが確実であるため、公開するようにしてください。ARC保持がない場合は正常に機能し、私にとってはうまくいきました. 編集済み Try.h

@property (strong, nonatomic) NSMutableArray *twitterText;

.m

@synthesize twitterText = _twitterText;

「ViewDidLoad」デリゲートで

self.twitterText = [[NSMutableArray alloc]init];

あなたの関数で

for (NSDictionary *tweet in results)
{
    [self.twitterText addObject:[tweet objectForKey:@"text"]];
}
于 2012-07-10T13:37:52.233 に答える