ในสถานการณ์ใดบ้างที่เราต้องเขียน __autoreleasing ความเป็นเจ้าของคุณสมบัติภายใต้ ARC
ฉันกำลังพยายามไขปริศนาให้เสร็จ __strongเป็นค่าเริ่มต้นสำหรับพอยน์เตอร์อ็อบเจ็กต์ Objective-C ที่เก็บรักษาได้เช่น NSObject, NSString และอื่น ๆ ซึ่งเป็นการอ้างอิงที่ชัดเจน ARC จะปรับสมดุลกับ-releaseจุดสิ้นสุดของขอบเขต __unsafe_unretainedเท่ากับวิธีเก่า ใช้สำหรับตัวชี้ที่อ่อนแอโดยไม่ยึดวัตถุที่ยึดได้ __weakเหมือนกับ__unsafe_unretainedยกเว้นว่ามันเป็นการอ้างอิงที่อ่อนแอโดยอัตโนมัติซึ่งหมายความว่าตัวชี้จะถูกตั้งค่าเป็นศูนย์ทันทีที่วัตถุที่อ้างอิงถูกยกเลิกการจัดสรร ซึ่งจะช่วยขจัดอันตรายจากตัวชี้อันตรายและข้อผิดพลาด EXC_BAD_ACCESS แต่สิ่งที่__autoreleasingดีสำหรับ? ฉันมีช่วงเวลาที่ยากลำบากในการค้นหาตัวอย่างที่ใช้ได้จริงเกี่ยวกับเวลาที่ฉันต้องใช้คุณสมบัตินี้ ฉันเชื่อว่าเป็นเพียงฟังก์ชันและวิธีการที่คาดว่าจะมีตัวชี้ตัวชี้เช่น: - (BOOL)save:(NSError**); หรือ NSError *error = nil; [database save:&error]; ซึ่งภายใต้ ARC จะต้องประกาศด้วยวิธีนี้: - (BOOL)save:(NSError* __autoreleasing *); แต่นี้เป็นที่คลุมเครือเกินไปและฉันต้องการที่จะเข้าใจว่าทำไม ข้อมูลโค้ดที่ฉันพบคือตำแหน่ง __autoreleasing ระหว่างสองดาวซึ่งดูแปลกสำหรับฉัน ประเภทคือNSError**(ตัวชี้ตัวชี้ไปที่ NSError) ดังนั้นทำไมจึงวางไว้__autoreleasingระหว่างดวงดาวไม่ใช่แค่อยู่ข้างหน้าNSError**? นอกจากนี้ยังอาจจะมีสถานการณ์อื่น ๆ __autoreleasingที่ฉันจะต้องพึ่งพา