Date post: | 28-Nov-2014 |
Category: |
Technology |
Upload: | jun-shimizu |
View: | 795 times |
Download: | 1 times |
Protocols and Basic QueueHendy Christianto
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.
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.
Protocols DeclarationFirst, we create an Object, for example CustomActionSheet.h, and write this code down
Protocols Declaration (cont’d)- In the class CustomActionSheet.m we include a
button with this action
Protocols Implementation on Controller On your controller, Import CustomActionSheet.h, and
implement the delegate protocols on the interface <CustomAlertViewDelegate>
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)
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
Q&A
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.
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)
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.
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.
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 :
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
Sources http://zeroheroblog.com/ios/concurrency-in-ios-grand-cent
ral-dispatch-gcd-dispatch-queues
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCwQFjAA&url=http%3A%2F%2Fdeveloper.apple.com%2Flibrary%2Fios%2Fdocumentation%2Fcocoa%2Fconceptual%2FProgrammingWithObjectiveC%2FWorkingwithProtocols%2FWorkingwithProtocols.html&ei=M_63Uqu0GYSLrQeAr4HABw&usg=AFQjCNFgnNO3Xi_gz20n-N60xaJKAYzvPQ&sig2=mPvFV2GQCGvQdjLJ4bXdkw&bvm=bv.58187178,d.bmk
http://rypress.com/tutorials/objective-c/protocols.html