ในหน้า 17 ของงานนำเสนอ WWDC14 นี้มีข้อความว่า
การทำงานกับ Objective-C? ยังต้องจัดการ autoreleasepool พูลการปล่อยอัตโนมัติ
{/ * code * /}
นั่นหมายความว่าอย่างไร? หมายความว่าถ้าฐานรหัสของฉันไม่มีไฟล์ Objective-C autoreleasepool {}
ก็ไม่จำเป็น?
ในคำตอบของคำถามที่เกี่ยวข้องมีตัวอย่างที่autoreleasepool
สามารถเป็นประโยชน์:
- (void)useALoadOfNumbers {
for (int j = 0; j < 10000; ++j) {
@autoreleasepool {
for (int i = 0; i < 10000; ++i) {
NSNumber *number = [NSNumber numberWithInt:(i+j)];
NSLog(@"number = %p", number);
}
}
}
}
หากโค้ดด้านบนได้รับการแปลเป็น Swift พร้อมกับautoreleasepool
หลุด Swift จะฉลาดพอที่จะรู้ว่าnumber
ควรปล่อยตัวแปรหลังจากตัวแรก}
(เช่นเดียวกับภาษาอื่น ๆ ) หรือไม่
autoreleasepool
ใน Swift ผมขยายตัวในคำถามของคุณและถามในฟอรั่มที่ dev