[ios] Protocols and Basic Queue


Published on

PT.BUZOO INDONESIA is No1 Japanese offshore development company in Indonesia.
We are professional of web solution and smartphone apps. We can support Japanese, English and Indonesia.
We are hiring now at http://buzoo.co.id/

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

[ios] Protocols and Basic Queue

  1. 1. Protocols and Basic Queue Hendy Christianto
  2. 2. What is protocols?    Protocols is methods (like other method in objective C), like a regulations needed to implement a class. For example : In traffic rules, there are some law required for someone who want to drive a car, like having a driving license, obey the traffic lights, etc. A protocol is a group of related properties and methods that can be implemented by any class.
  3. 3. Why use protocols?  They are more flexible than a normal class.  Produce a reusable code (you don’t need to import your class controller), since they let you to reuse a single API declaration in completely unrelated class.
  4. 4. Protocols Declaration First, we create an Object, for example CustomActionSheet.h, and write this code down
  5. 5. Protocols Declaration (cont’d) - In the class CustomActionSheet.m we include a button with this action
  6. 6. Protocols Implementation on Controller  On your controller, Import CustomActionSheet.h, and implement the delegate protocols on the interface <CustomAlertViewDelegate>
  7. 7. Protocols Implementation on Controller (Cont’d)  Implement the protocol method on your viewcontroller.m (don’t forget to include, since it’s required, or your app will crash)
  8. 8. Conclusions  Using this protocols function, you can create your own library functions (or even framework)  Protocols can make your code even easier because of it’s own flexibility
  9. 9. Q&A
  10. 10. Concurrency Programming : Dispatch Queue (GCD) Grand Central Dispatch (GCD) takes the thread management code you would normally write in your own applications and moves that code down to the system level. All you have to do is define the tasks you want to execute and add them to an appropriate dispatch queue. GCD takes care of creating the needed threads and of scheduling your tasks to run on those threads.
  11. 11. What is GCD for ?  Schedules your tasks, and execute them in the order in which they arrive. They can either concurrent or serial. A concurrent queue will execute many jobs simultaneously (do not wait with the next job until any previous ones finish), a serial queue will only execute one job at a time. (FIFO)
  12. 12. Types of GCD  The main queue : task submitted to the main thread of our app.  Global queues : task submitted to the entire process.  Private queues : queues that created by our own with dispatch_queue_create, Can be used as synchronization mechanism.
  13. 13. When to use? For example, for database accessing. Database is a sensitive process, you have to prevent deadlock (accessing and update from many connections) that’s why database connection and access can be accessed one at a time. Thus, you have to make a schedule and queue for any task that want to access the database.
  14. 14. Private queue  You can create queue by make an identifier.  This will create a private queue with synchronized queue You can implement the queue and add tasks with following code : 
  15. 15. Dispatch_Sync & Dispatch_async    Dispatch sync is mutex lock. In other words, it will wait the task to complete and then add another task Dispatch async is not mutex lock. In other words, it won’t wait for another task to completely finished, it will run another task. Example : It may print 2413 or 2143 or 1234 but 1 always before 3 It will always print 1234
  16. 16. Sources    http://zeroheroblog.com/ios/concurrency-in-ios-grandcentral-dispatch-gcd-dispatch-queues https://www.google.com/url?sa=t&rct=j&q=&esrc=s&sourc e=web&cd=1&cad=rja&ved=0CCwQFjAA&url=http%3A%2F %2Fdeveloper.apple.com%2Flibrary%2Fios%2Fdocumentati on%2Fcocoa%2Fconceptual%2FProgrammingWithObjectiv eC%2FWorkingwithProtocols%2FWorkingwithProtocols.html& ei=M_63Uqu0GYSLrQeAr4HABw&usg=AFQjCNFgnNO3Xi_gz2 0nN60xaJKAYzvPQ&sig2=mPvFV2GQCGvQdjLJ4bXdkw&bvm= bv.58187178,d.bmk http://rypress.com/tutorials/objective-c/protocols.html