ช่วงนี้ฉันใช้enumerateObjectsUsingBlock:งานจำนวนมากสำหรับความต้องการการแจงนับอย่างรวดเร็วและฉันมีปัญหาในการทำความเข้าใจการใช้งานBOOL *stopในบล็อกการแจงนับ
NSArrayรัฐอ้างอิงระดับ
stop: การอ้างอิงถึงค่าบูลีน บล็อกสามารถกำหนดค่าYESเพื่อหยุดการประมวลผลอาร์เรย์เพิ่มเติมได้stopอาร์กิวเมนต์เป็นข้อโต้แย้งออกเท่านั้น คุณควรตั้งค่าบูลีนนี้เป็นYESภายในบล็อกเท่านั้น
ดังนั้นแน่นอนฉันสามารถเพิ่มสิ่งต่อไปนี้ในบล็อกของฉันเพื่อหยุดการแจงนับ:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
จากสิ่งที่ฉันสามารถบอกได้การไม่ตั้งค่าอย่างชัดเจน*stopให้YESไม่มีผลข้างเคียงเชิงลบใด ๆ การแจงนับดูเหมือนจะหยุดตัวเองโดยอัตโนมัติเมื่อสิ้นสุดอาร์เรย์ ดังนั้นการใช้จึง*stopจำเป็นจริงๆในบล็อก?
stopธงเป็นคำแนะนำ การแจงนับอาจดำเนินต่อไปสำหรับจำนวนการวนซ้ำที่ไม่ได้กำหนดในกรณีที่เกิดขึ้นพร้อมกันตัวอย่างเช่น กล่าวคือคุณไม่ควรตั้งค่า__blockตัวแปรโดยไม่มีเงื่อนไขในการแจกแจงแต่ละครั้งและคาดว่าจะเป็นค่า "สุดท้าย" เมื่อใช้stopเพื่อยุติก่อนกำหนด คุณควรจับคู่ "ไม่ใช้วัตถุนี้" กับการตั้งค่าstop = YES;เสมอ