指针,NSMutableArray,保留,循环和混乱

ale*_*x25 2 arrays iphone pointers objective-c

可能问题是直截了当但我不理解它.

我有以下iPhone代码

for(int x = 0 ; x < [allFriends count] ; x++)   
{
    Friend *f = [[Friend alloc] init];          
    f = [allFriends objectAtIndex:x];

    if([uid isEqualToString:[f uid]])
    {                                           
        [f AddAlbum:album];
        [allFriends replaceObjectAtIndex:x withObject:f];
     }                              
}
Run Code Online (Sandbox Code Playgroud)

无论我在哪里调用[f release]该应用程序总是崩溃.为什么?(BTW循环运行几千次)

有更有效的方法吗?

我想我提供了足够的代码,如果没有,请告诉我!

谢谢你的帮助!

Six*_*tto 5

您在此行中创建的对象(可能是尝试发布):

Friend *f = [[Friend alloc] init];
Run Code Online (Sandbox Code Playgroud)

当你分配f给你从数组中获取的对象时,会立即泄露:

f = [allFriends objectAtIndex:x];
Run Code Online (Sandbox Code Playgroud)

所以它确实你要释放的对象,这意味着数组中的指针不再有效(它指向一个已发布的实例).