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