Objective-C Tricks

Post on 05-Dec-2014

222 views 3 download

description

These slides talk about tricks in Objective-C language while working in iOS apps. It contains info and tricks about Literals, NSString, CGRect and Method Swizzling

Transcript of Objective-C Tricks

1

Objective-c Tricks2014 – Jan

By: Hossam Ghareeb

2

Use Literals

The following is the old way of writing code:

3

The same code can be written as follows:

4

Subscripting

You can use subscripting to access the values inside dictionaries and arrays. This is how the syntax looks:

5

Classes And Selectors From Strings

We can dynamically generate classes and selectors from strings,  We do this by using the NSClassFromString and NSSelectorFromString functions:

NSClassFromString will return nil if there isn't a class in the runtime that matches the string

* Required 6

We can also decide in run time which selector to be called based on input:

* Required 7

Method Swizzling Methods are made up of two components. The selector, which is an identifier

for a method, and the IMP, which is the actual implementation that is run. One of the key things about this separation is that a selector and IMP link can be changed. One IMP can have multiple selectors pointing to it.

Subclassing -> This allows you to override a method and call the original implementation, but it means that you have to use instances of this subclass.

Category -> you cannot call the original implementation if you override a method.

Swizzling -> You can override a method without subclassing AND call the original implementation

8

Example make a UINavigationBar green

T this will change all navigation bars in the

app to green, but if I used UIImagePickerController it will be changed too!!!. We have to find new way for that >>>>> Method Swizzling

* Required 9

Method Swizzling Cont. Method swizzling, in short, is switching methods at runtime. So

you can say for UINavigationBar don’t use the standard drawRect:, but instead swap it with a different one

10

Here is the swizzling:

* Required 11

Another problem solved by Swizzling

 measure how long the synchronize takes in NSUserDefaults

12

Cont.

13

Example 2

Borders around all UIViews initWithFrame: get a red border,

views that were unarchived (for example as part of XIBs) get a blue border.

14

Surprise  the status bar at the top ofan iOS app is drawn by the app itself

* Required 15

How to do that?

* Required 16

Cont.

17

Other tricks objc_msgSend()

This function takes a target, a selector and a list of arguments

18

CGRect Tricks Shrink CGRect:

Different insets for each edge:using UIEdgeInsets(top, left, bottom, right)

19

Cont.

CGRectUnion is UIScrollView’s best friend:if you want use UIScrollView with bunch of subviews, so you have to know only the top-left and bottom-right views:

20

Cont.

Dictionary Representation (to store in in plist on disk):

Print CGRect values :

21

Cont. Storing it in Obj-C Storage Classes

22

Thank you

Any Questions?