{"id":24098,"date":"2022-11-30T10:04:44","date_gmt":"2022-11-30T04:34:44","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/"},"modified":"2022-11-30T10:04:44","modified_gmt":"2022-11-30T04:34:44","slug":"solved-gcd-flow-how-to-write","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/","title":{"rendered":"[Solved] GCD flow how to write"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-14853288\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"14853288\" data-parentid=\"14853211\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p><code>dispatch_release(queue);<\/code> don&#8217;t do it there, the dispatch queue that you are calling its going to a backThread, so wat is happening is :- <\/p>\n<blockquote>\n<p>your queue is getting released before the block of code executes.<\/p>\n<\/blockquote>\n<p>since your <code>queue<\/code> looks like an ivar, release it in dealloc. Rest, your code looks fine ..put a breakpoint inside and check if the block is executing.<\/p>\n<p><strong>EDIT<\/strong><\/p>\n<p>I dont understand, what u are trying to achieve by suspending the queue, there is no need to do it. You dont need to check whether the block has finished executing. The block will finish and then call the <code>dispatch_async<\/code> , get the main queue and update the UI from there. <\/p>\n<p>Now, when you are creating the queue, create it lazily in your method. take the queue as an ivar in header file:<\/p>\n<pre><code>@interface YourFileController : UIViewController {\n    dispatch_queue_t queue;\n}\n<\/code><\/pre>\n<p>Then in your method modify it as such:<\/p>\n<pre><code>if (isCaptureScreenStart)\n{\n    if (CMTimeGetSeconds([avPlayer currentTime])&gt;0)\n    {\n        if (avFramesArray!=nil)\n        {\n            if (!queue)\n                queue = dispatch_queue_create(\"array\", DISPATCH_QUEUE_SERIAL);\n\n            dispatch_sync(queue, ^{\n                [avFramesArray addObject:[self screenshotFromPlayer:avPlayer maximumSize:avPlayerLayer.frame.size :CMTimeGetSeconds([avPlayer currentTime])]];\/\/stop at this line\n                NSLog(@\"count:%d\",[avFramesArray count]);\n                dispatch_sync(dispatch_get_main_queue(), ^{\n                    NSLog(@\"Frame are created:%d\",[avFramesArray count]);\n                    if ([avFramesArray count]==0)    \n                    {\n                        NSLog(@\"Frame are over\");\n                    }\n                });\n            });\n        }\n    }\n}\n<\/code><\/pre>\n<p><strong>NOTE<\/strong> : <code>DISPATCH_QUEUE_SERIAL<\/code> creates a serial queue, meaning all the blocks submitted to it will execute serially in First in First Out order. Once all the blocks submitted get executed, the queue stays \ud83d\ude09 ..submit another block to it and it executes the block \ud83d\ude00<\/p>\n<p>this represents one whole block:-<\/p>\n<pre><code>[avFramesArray addObject:[self screenshotFromPlayer:avPlayer maximumSize:avPlayerLayer.frame.size :CMTimeGetSeconds([avPlayer currentTime])]];\/\/stop at this line\n                NSLog(@\"count:%d\",[avFramesArray count]);\n                dispatch_sync(dispatch_get_main_queue(), ^{\n                    NSLog(@\"Frame are created:%d\",[avFramesArray count]);\n                    if ([avFramesArray count]==0)    \n                    {\n                        NSLog(@\"Frame are over\");\n                    }\n                });\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">7<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved GCD flow how to write <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] dispatch_release(queue); don&#8217;t do it there, the dispatch queue that you are calling its going to a backThread, so wat is happening is :- your queue is getting released before the block of code executes. since your queue looks like an ivar, release it in dealloc. Rest, your code looks fine ..put a breakpoint inside &#8230; <a title=\"[Solved] GCD flow how to write\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\" aria-label=\"More on [Solved] GCD flow how to write\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[5124,471,1446,469,470],"class_list":["post-24098","post","type-post","status-publish","format-standard","hentry","category-solved","tag-grand-central-dispatch","tag-ios","tag-ipad","tag-iphone","tag-objective-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] GCD flow how to write - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] GCD flow how to write - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] dispatch_release(queue); don&#8217;t do it there, the dispatch queue that you are calling its going to a backThread, so wat is happening is :- your queue is getting released before the block of code executes. since your queue looks like an ivar, release it in dealloc. Rest, your code looks fine ..put a breakpoint inside ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-30T04:34:44+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] GCD flow how to write\",\"datePublished\":\"2022-11-30T04:34:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\"},\"wordCount\":202,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"grand-central-dispatch\",\"ios\",\"ipad\",\"iphone\",\"objective-c\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\",\"name\":\"[Solved] GCD flow how to write - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-30T04:34:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] GCD flow how to write\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] GCD flow how to write - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] GCD flow how to write - JassWeb","og_description":"[ad_1] dispatch_release(queue); don&#8217;t do it there, the dispatch queue that you are calling its going to a backThread, so wat is happening is :- your queue is getting released before the block of code executes. since your queue looks like an ivar, release it in dealloc. Rest, your code looks fine ..put a breakpoint inside ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/","og_site_name":"JassWeb","article_published_time":"2022-11-30T04:34:44+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] GCD flow how to write","datePublished":"2022-11-30T04:34:44+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/"},"wordCount":202,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["grand-central-dispatch","ios","ipad","iphone","objective-c"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/","url":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/","name":"[Solved] GCD flow how to write - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-30T04:34:44+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-gcd-flow-how-to-write\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] GCD flow how to write"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/24098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=24098"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/24098\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=24098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=24098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=24098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}