Objective c 我为什么要撞车?解除锁定/释放+;财产/保留古怪
我的控制器中的代码:Objective c 我为什么要撞车?解除锁定/释放+;财产/保留古怪,objective-c,Objective C,我的控制器中的代码: CalcBorderBlocks *calcBB = [[CalcBorderBlocks alloc] init]; NSMutableArray *blockArray = [calcBB calc:341241133]; [calcBB release]; // Releases calcBB. CalcBorderBlocks.h中的代码: #import <Foundation/Foundation.h> @interface CalcBorder
CalcBorderBlocks *calcBB = [[CalcBorderBlocks alloc] init];
NSMutableArray *blockArray = [calcBB calc:341241133];
[calcBB release]; // Releases calcBB.
CalcBorderBlocks.h中的代码:
#import <Foundation/Foundation.h>
@interface CalcBorderBlocks : NSObject {
@private
NSMutableArray *blockArray_;
}
@property(nonatomic, retain) NSMutableArray *blockArray;
- (NSMutableArray *)calc:(int)blockID;
@end
@结束发布崩溃的回溯。更有可能的是,这是因为您将数组中的某些内容(或数组本身)放在了其他地方。
[calcBB release]; // Releases calcBB.
那就是坠机的原因
您正在释放calcBB
,然后在dealloc中释放blockArray
我怀疑您需要保留blockArray,根据需要处理它,然后再释放它
CalcBorderBlocks *calcBB = [[CalcBorderBlocks alloc] init];
NSMutableArray *blockArray = [[calcBB calc:341241133] retain];
[calcBB release]; // Releases calcBB.
// Process blockArray as needed
[blockArray release];
这:
通常意味着blockArray会被保留,但也会自动删除。如果你想让它保持活力,你必须自己保留它,否则它会在一段时间后被自动删除池释放。我喜欢这个标题…为什么我会崩溃?:)
CalcBorderBlocks *calcBB = [[CalcBorderBlocks alloc] init];
NSMutableArray *blockArray = [[calcBB calc:341241133] retain];
[calcBB release]; // Releases calcBB.
// Process blockArray as needed
[blockArray release];
CalcBorderBlocks *calcBB = [[CalcBorderBlocks alloc] init];
NSMutableArray *blockArray = [calcBB calc:341241133];
[calcBB release]; // Releases calcBB.