This document discusses various Objective-C tricks and techniques, including using literals, subscripting dictionaries and arrays, dynamically generating classes and selectors from strings, method swizzling to override methods without subclassing and call the original implementation, and drawing borders around views using method swizzling. It also discusses using CGRects, like shrinking them and using unions, as well as representing and storing CGRect values.
4. Subscripting
You can use subscripting to access the
values inside dictionaries and arrays. This
is how the syntax looks:
4
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
5
6. We can also decide in run time which selector to be called
based on input:
* Required 6
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
* Required 7
8. Example
make a UINavigationBar green
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
8
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
* Required 9
13. Example
Borders around all UIViews
initWithFrame: get a red border, views
that were unarchived (for example as
part of XIBs) get a blue border.
13
18. CGRect Tricks
Shrink CGRect:
Different insets for each edge:
using UIEdgeInsets(top, left, bottom, right)
18
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:
19