对象创建&发布不起作用?

时间:2014-02-26 09:50:03

标签: ios objective-c memory-management

我创建了ViewController.Here两个按钮正在创建&发布NSObject。

// This Button for creating & assign the values to the NSObject.
- (IBAction)CreateObjectBtn:(id)sender 
{
    [cpFileObject methodForRetain];  
    // Here the tempFilePath  = [[NSBundle mainBundle]pathForResource:@"Innum_Enna_Thozha-VmusiQ.Com" ofType:@"mp3"];
    cpFileObject.fileData =[NSData dataWithContentsOfFile:tempFilePath];
    cpFileObject.filePath = tempFilePath;  
}

// This Button for **release** the NSObject from memory Pool.
- (IBAction)releaseObjectBtn:(id)sender 
{
    [cpFileObject methodForRelease];    
}

NSObject名称 - CPFile。

// This Instance Method for **Increase** the allocation of NSObject.
-(void)methodForRetain
{
    if (!fileData) 
    {
        [fileData retain];
    }       
}

// This Instance Method for **Decrease** the allocation of NSObject.
- (void)methodForRelease
{
    [fileData release];
    NSLog(@"%lu Object released ",(unsigned long)self.retainCount);       
}

问题出现在创造和释放只能工作两到三次。如果我点击CreateObjectBtn之后。错误显示如下。

Error code in CPFile Object

3 个答案:

答案 0 :(得分:0)

如果您在

中的 Viewcontroller2 中看到了您的队列

[Viewcontroller2 playBtn:]

您正在尝试setFileData(设置属性)。

enter image description here

只需尝试记录您正在设置的值和FileData。

答案 1 :(得分:0)

if (!fileData) 
{
     [fileData retain];
}  

没有什么可以保留的。

您应该先创建一个对象。您的[fileData retain]应替换为:

if (!fileData) 
{
     fileData =[[NSData alloc] initWithContentsOfFile:tempFilePath];
}

答案 2 :(得分:0)

试试这个:

    - (IBAction)CreateObjectBtn:(id)sender 
    {
        cpFileObject.fileData =[NSData dataWithContentsOfFile:tempFilePath];
        cpFileObject.filePath = tempFilePath; 
        [cpFileObject methodForRetain];  //move it down
    }

    -(void)methodForRetain
    {
        [fileData retain]; //it doesn't matter if fileData is nil; 
    }