我创建了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
之后。错误显示如下。
答案 0 :(得分:0)
如果您在
中的 Viewcontroller2 中看到了您的队列 [Viewcontroller2 playBtn:]
您正在尝试setFileData(设置属性)。
只需尝试记录您正在设置的值和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;
}