Giả sử rằng tôi đã viết đoạn code dưới đây trong một lớp A:Trở đối tượng autoreleased sử dụng ARC
-(NSArray *) returnListNames {
NSArray *returnList = [NSArray arrayWithArray:myListNames];
return (returnList);
}
Và trong một lớp học BI nhận được rằng danh sách trong một số phạm vi theo cách này:
{
/* Without ARC I would retain the array returned from ClassA
to guarantee its reference like this:
[[myClassA returnListNames] retain]; */
NSArray *myNames = [myClassA returnListNames];
}
Xét rằng các returnList
được phân bổ bằng cách sử dụng một phương pháp autorelease, làm thế nào tôi có thể đảm bảo rằng tôi sẽ không mất tham chiếu đến nó bằng cách sử dụng ARC (theo đó tôi không thể sử dụng retain
)? Tôi có phải sử dụng [[NSArray alloc] init]
trên mảng myNames
không? Hoặc tôi phải sử dụng alloc
trên returnList
thay vì phương pháp tự động phát hành? Hoặc tôi có thể chỉ dựa vào ARC? Hoặc là có một giải pháp?
Vì vậy, tôi có thể tiếp tục sử dụng phương pháp autorelease khi phân bổ * returnList rằng ARC sẽ đảm bảo sự tồn tại của nó. Đúng? –
Đúng vậy. Nó thậm chí không quan trọng cho dù bạn sử dụng một phương pháp autorelease hoặc phân bổ-init. – BoltClock
@BoltClock khi đối tượng được nhả trong trường hợp này? – Yadnesh