jer*_*ere 1 memory-management objective-c ios
如果我调用[alloc] init]已经初始化和分配的对象会发生什么?
在我的特殊情况下,我有一个NSMutableArray我在超类中初始化Parent使用NSMutableArray* someArray = [NSMutableArray alloc] init];
在子类中,Child我需要someArray在一个特定的索引处插入一个对象,例如3.
所以如果数组没有项目,或者它的项目少于我想要插入的索引(数组有4个项目,并且我想在索引10处插入它会崩溃.
如果我someArray在Child课堂上再次初始化会怎么样?将存储的指针someArray替换为我正在初始化的新指针,而"旧" 指针会泄漏吗?
编辑:
对不起,我的术语有点过时了.我不是故意这样做[someObject alloc],而是在做someObject = [SomeClass alloc] init];了someObject之前已经用一个实例初始化的地方SomeClass
为了清楚起见,当你说"如果我打电话[alloc] init]给一个物体会发生什么......"你的术语是错误的.
以下行:
NSMutableArray* someArray = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
阅读英文:
"将alloc消息发送到NSMutableArray类对象,然后将init消息发送到从第一条消息返回的对象,然后将返回的对象存储init到名为的指针变量中someArray."
我这样说是为了强调你不是在现有对象上"调用alloc/init"这一事实,而是创建一个新对象,并在对前一个对象的引用上存储对这个新对象的引用.由于你不再有对前一个对象的引用,你已经失去了正确释放其内存的能力,所以是的,你会泄漏它.
| 归档时间: |
|
| 查看次数: |
623 次 |
| 最近记录: |