【发布时间】:2013-07-16 21:38:39
【问题描述】:
我包含了完整的项目,所以没有什么是模棱两可的。
啊.h
#import <Foundation/Foundation.h>
@interface A : NSObject
-(void) zero;
@end
上午
#import "A.h"
@implementation A
#define width 3
#define height 3
uint8_t** _board;
-(void) zero
{
for(int i = 0; i < width; i++)
for(int j = 0; j < height; j++)
_board[i][j] = 0;
}
-(void)dealloc
{
for(int i = 0; i < width; i++)
free(_board[i]);
free(_board);
}
-(id) init
{
self = [super init];
if(self)
{
_board = malloc(sizeof(uint8_t*)*width);
for(int i = 0; i < width; i++)
_board[i] = malloc(sizeof(uint8_t)*height);
}
return self;
}
@end
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m
#import "ViewController.h"
#import "A.h"
@implementation ViewController
A* _gameBoard;
- (void)viewDidLoad
{
[super viewDidLoad];
_gameBoard = [[A alloc] init];
[[A alloc] init];
[_gameBoard zero];
}
@end
具体来说,程序在设置_board 时会在函数0 中崩溃。我还想指出,如果您删除
[[A alloc] init];
从 ViewController 的实现来看,程序不会崩溃。提前感谢您的帮助。
【问题讨论】:
-
_gameBoard = [[A alloc] init]; [[A alloc] init];alloc-init 两次很奇怪
标签: ios objective-c memory-management