Upvote:2
Aprove answer
You can’t call serialQueue.sync
from the block that is being executed by the serialQueue
.
TL;DR;
Here is what I think is likely happening:
- You schedule a block A via
serialQueue.async
fromnotifyDelegate
. - In the context of block A execution, your delegate calls
changeState
, incorrectly assuming that current thread is not theserialQueue
’s thread. - From the
changeState
method, being on theserialQueue
’s call stack, you schedule synchronously another block B viaserialQueue.sync
which can never start because you wait for it to be started in the previously asynchronously scheduled block A which is currently executed by theserialQueue
.
Ways to avoid this situation:
- Never invoke public callbacks in the private serial queue that you use for synchronization.
OR
- Don’t use private queue for synchronization, use
os_unfair_lock
orNSLock
orNSRecursiveLock
instead. It might also improve the performance.
Credit Goes to: stackoverflow.com
Related question with same questions but different answers
- WHAT HAPPENS WHEN YOU DISPATCH A TASK ASYNCHRONOUSLY INSIDE A SYNC QUEUE IN SWIFT? IN IOS
- TABLEVIEW DISAPPEARS WHEN SCROLLING IN IOS
- NSDATAASSET() ONLY RETURNING ONE JSON FILE WHEN THERE ARE 2 SPECIFIED IN IOS
- HOW DO I CALL A FUNCTION ON A VIEW WHEN THE @OBSERVEDOBJECT IS UPDATED IN IOS
- WHY AM I RECEIVING AN INCORRECT ARRAY COUNT WHEN USING ".COUNT" TO RETURN A SWIFT SUBSCRIPT COUNT? IN IOS
- WHAT IS DEADLINE OF MANAGE FIREBASE INSTALLATIONS IMPLEMENTATION ? WHAT IS IMPACT OF DEPRECATED FIREBASE INSTALLATION ID IN MOBILE APP? IN IOS
- HOW TO IMPLEMENT LOCAL NOTIFICATION WHEN MESSAGE IS RETRIEVED USING XMPP FRAMEWORK? IN IOS
- @VIEWBUILDER THROWS ERROR WHEN INIT WITH OTHER PROPERTIES IN IOS
- IS THERE AN EXPECTED LATENCY BAND WHEN SENDING A FIREBASE TOPIC MESSAGE AND CAN IT WORSEN WHEN YOU HAVE A LARGER NUMBER OF SUBSCRIBERS TO A TOPIC? IN IOS
- XCODE: WHAT IS THIS BLUE SELECTION LINE AND HOW DO I GET RID OF IT? IN IOS
- "'_' CAN ONLY APPEAR IN A PATTERN OR ON THE LEFT SIDE OF AN ASSIGNMENT"-ERROR WHEN CREATING CLOSURE IN IOS
- SWIFT ON IOS: TASK ON GLOBAL QUEUE ADDS 2ND TASK TO MAIN QUEUE TO DISPLAY UIIMAGEVIEW, WHICH DOES NOT DISPLAY IN IOS
- HOW DOES POINTER DATA STORED IN MACHO __OBJC_CLASSLIST SECTION REBASED WHEN RUN A IOS APP? IN IOS
- UITEXTFIELD IN SWIFT – TEXT DIDSET NOT CALLED WHEN TYPING IN IOS
- IS IT POSSIBLE FOR NSFETCHRESULTSCONTROLLER TO PERFORM MOVE AND UPDATE OPERATION, WHEN WE CHANGE THE SECTION OF AN ITEM? IN IOS
- HOW TO FIX -- IPHONEOS_DEPLOYMENT_TARGET IS SET TO 8.0 WHEN PERMISSION HANDLER ALREADY IN MY PODFILE? IN IOS
- BUTTON FLICKERING WHEN RELOADING DATA IN COLLECTIONVIEW IN IOS
- HOW CAN I HAVE THE LABEL TEXT REVERT TO ORIGINAL COST WHEN ALERT CONTROLLER IS DISMISSED IN IOS
- HOW CAN I REFRESH ANOTHER CELL WHEN CHANGE OBSERVEDOBJECT IN IOS
- HOW CAN I ADD PODS FOR TESTING WITHOUT "REPEATING" THEM IN MY `PODFILE` WHEN USING MULTIPLE FRAMEWORKS? IN IOS
- WHAT WILL BE THE ISSUE WHEN CRASH LOG CONTAINS _DISPATCH_CALL_BLOCK_AND_RELEASE + 24 IN IOS
- VIEW NOT UPDATING WHEN ACCESSING OBSERVABLEOBJECT IN ELSE BLOCK IN IOS
- IONIC 5 IOS APP RESTARTS WHEN TOO MANY IMAGES ARE LOADED IN IOS
- IN A TABLE VIEW CONTROLLER WHEN ADDING A CONTAINER VIEW, HOW CAN I MOVE IT TO THE VERY BOTTOM? (SWIFT) IN IOS
- DOES CORE DATA NOT SUPPORT CUSTOM TYPES? WHAT SHOULD I USE TO STORE CURRENCY? IN IOS
- AVOID EXTERNAL DISPLAY TO SHOW NATIVE IOS SCREEN WHEN APP ENTERING BACKGROUND IN IOS
- SHORTCUT TO TURN OFF PHONE WHEN PHONE IS FULL CHARGE IN IOS
- TABLEVIEW CANNOT DETECT WHEN CLICKING ON SPECIFIC ITEM IN IOS
- "IPHONE CREATED A STRONG PASSWORD FOR THIS WEBSITE" POPUP APPEARING WHEN TAPPING ON A SECURE TEXT FIELD IN IOS
- AVPLAYER VIDEO DISAPPEARS WHEN NAVIGATING 'BACK' IN SWIFT IN IOS
- HOW TO SET THE COLOR OF A NAVIGATIONVIEW SYMBOL BUTTON IN IOS
- WHY ISN'T ONE OF THE ANIMATIONS ACTIVE? IN IOS
- FIRESTORE COLLECTION PATH GIVING BUGS WITH CONSTANTS VALUE AND STRING VALUE IN IOS
- SWIFTUI CIRCLE POSITION X AND Y IN IOS
- DISPATCH SEMAPHORE FOR UI IN IOS
- MY IOS SWIFTUI PROJECT DOESN'T PLAY SOUNDS WITH AVAUDIOPLAYER IN IOS
- HOW CAN I MAKE MULTIPLE CALLS OF NSBATCHUPDATEREQUEST WITHIN DB TRANSACTION SO THAT EITHER ALL ROWS IS UPDATED OR NONE IS UPDATED? IN IOS
- DELETE ALL CHARACTER AFTER PARTICULAR CHARACTER IN STRING IN IOS
- WANT TO RESTRICT AREA OF PAN GESTURE ON ONE IMAGEVIEW SWIFT 5 IN IOS
- HOW TO OPTIONALLY USE ICLOUD WITH CORE DATA? IN IOS
- WHAT ARE BORDERRECT, EDITINGRECT, PLACEHOLDERRECT, TEXTRECT IN UITEXTFIELD? IN IOS
- HOW TO REDUCE VERTICAL SPACING IN UICOLLECTION VIEW IN IOS
- HOW TO PRESENT VIEW CONTROLLER WITH TAB BAR IN IOS
- SWIFT COMBINE RECURSIVE RETRY IN IOS
- HOW TO CHECK ON VARIABLES UPDATES FROM A SINGLETON IN VIEWCONTROLLER? IN IOS
- WEATHER ICON NOT DISPLAYING IN IMAGEVIEW IN WEATHER PP IN IOS
- HOW TO SET UIVIEW IN SEMI CIRCLE IN SWIFT 5 IN IOS
- DYNAMIC LIST OF FIXED SIZE SHORT[] ARRAYS IN IOS
- HOW TO GET OLDER VERSION OF EXPO CLIENT APP FOR IOS IN IOS
- HOME AUTOMATION WITH ESP32, BLUETOOTH AND IPHONE DRIVES ME CRAZY IN IOS
- COCOAPODS COULD NOT FIND COMPATIBLE VERSIONS FOR POD IN IOS
- HOW TO FORMAT TIME INTERVAL OFFSET FROM 00:00 IN HH:MM USING DATECOMPONENTSFORMATTER IN IOS
- UNHANDLED EXCEPTION: DATABASEEXCEPTION(ERROR DOMAIN=FMDATABASE CODE=26 "FILE IS NOT A DATABASE". AFTER UPDATING TO FLUTTER 2.0 IN IOS
- ARE THERE ANY DIFFERENCES BETWEEN AVFOUNDATION AND AUDIOTOOLBOX IN PERFORMANCE IN SWIFT? IN IOS
- ONTAPGESTURE NOT WORKING WITH PADDING MODIFIER IN SWIFTUI IN IOS
- I WANT TO RELEASE MY MOBILE APP FREELY, NOT RELEASE FROM APPSTORE AND GOOGLEPLAY IN IOS
- MEMORY ALLOCATIONS PROFILER AND STEADILY INCREASING PERSISTENT MEMORY - SIGNS OF TROUBLE? IN IOS
- IS THERE ANY WAY TO BUILD IOS 15 APPS WITH XCODE 12.X? IN IOS