0

iOS デバイスでアプリをテストしているときにメモリ リークが見つかりました。以下のコードを見てください。

- (void)_startReceive
// Starts a connection to download the current URL.
{
    // Open a CFFTPStream for the URL.
    CFReadStreamRef ftpStream = CFReadStreamCreateWithFTPURL(NULL, (CFURLRef) url);

    assert(ftpStream != NULL);

    self.networkStream = (NSInputStream *) ftpStream;

    self.networkStream.delegate = self;
    [self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:RUNLOOPMODEL];

    [self.networkStream open];

    CFRelease(ftpStream);
}

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
// An NSStream delegate callback that's called when events happen on our 
// network stream.
{
    if (self.networkStream  == nil) {    //EXC_BAD_ACCESS(code = 1,address=......)
        NSLog(@"here");
    }


    switch (eventCode) {
        case NSStreamEventOpenCompleted: {
        } break;
        case NSStreamEventHasBytesAvailable: {
            NSInteger       bytesRead;
            uint8_t         buffer[LISTDOCBUFFER];
     ......
}

このコードを使用して、ドキュメント情報の ftp 要求を行います。しかし、時々 (8 回のうちの 1 回) だけ、メモした行でメモリ リークが発生します。iOSシミュレーターでのテストでは、これは決して起こりませんでした。考えられる原因と解決方法を知りたいです。

4

2 に答える 2

0

理由は何でもありえますが、無効なメモリ管理である可能性が最も高いです。XCode でプロジェクトを分析し、[プロジェクト] タブに移動して、メモリ リークが実際に発生している場所の分析を選択するか、同じ経路から Profile を実行して、特定のメモリ リークを検出できます。このリンクをチェックしてください。これは、メモリ関連の問題をデバッグする方法に関する非常にクールなトピックです。

于 2012-06-11T07:09:12.003 に答える