Objective-C - 初始化已初始化的对象?

jer*_*ere 1 memory-management objective-c ios

如果我调用[alloc] init]已经初始化和分配的对象会发生什么?

在我的特殊情况下,我有一个NSMutableArray我在超类中初始化Parent使用NSMutableArray* someArray = [NSMutableArray alloc] init];

在子类中,Child我需要someArray在一个特定的索引处插入一个对象,例如3.
所以如果数组没有项目,或者它的项目少于我想要插入的索引(数组有4个项目,并且我想在索引10处插入它会崩溃.

如果我someArrayChild课堂上再次初始化会怎么样?将存储的指针someArray替换为我正在初始化的新指针,而"旧" 指针会泄漏吗?

编辑:

对不起,我的术语有点过时了.我不是故意这样做[someObject alloc],而是在做someObject = [SomeClass alloc] init];someObject之前已经用一个实例初始化的地方SomeClass

Mat*_*ing 5

为了清楚起见,当你说"如果我打电话[alloc] init]给一个物体会发生什么......"你的术语是错误的.

以下行:

NSMutableArray* someArray = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

阅读英文:

"将alloc消息发送到NSMutableArray类对象,然后将init消息发送到从第一条消息返回的对象,然后将返回的对象存储init到名为的指针变量中someArray."

我这样说是为了强调你不是在现有对象上"调用alloc/init"这一事实,而是创建一个新对象,并在对前一个对象的引用上存储对这个新对象的引用.由于你不再有对前一个对象的引用,你已经失去了正确释放其内存的能力,所以是的,你会泄漏它.