# CocoaHeads
### December 2016
Daniel Saidi · [@danielsaidi](https://twitter.com/danielsaidi)
# Traditional Swedish Korvstoppning
## (Cramming)
# Not only for localizing
### Gather all your texts in one place
# Rule 1
### Know the language you localize in
# Rule 2
### Localized strings are dependencies - keep track of your dependencies
## Public Service Announcement
### If you use frameworks, alerts etc. - add L10n extensions to your app
###
# Once again...
### Images are dependencies - keep track of your dependencies
# Custom fonts can be a wonderful thing
# This is not about using the wrong fonts
# It is about handling fonts incorrectly
# Once again...
### Fonts are dependencies - keep track...we'll you get the point
# Important!
### Remember to add the fonts in your Info.plist
# A.k.a. Navigation Driven Development
# Friendly Advice
### Use xibs, but if you stick to storyboards...
# Summary
### Strings, images, fonts, segues...do not rely on strings that can fail silently
# 5. Dependency Injection
# 6. The Final Dependency
### A lot of talk about dependencies tonight
### The same goes for your choice of IoC
### Do not make it a global dependency
# Friendly advice
### Use git even for the smallest project
### Could pay for private GitHub
### SHOULD pay for private GitHub
### ...but there's a cheaper option
## Hint: it's not this
```
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// SYNCHRONOUS network request
// Data processing
dispatch_async(dispatch_get_main_queue(), ^{
// UI update
});
});
```
## It's not even this
```
DispatchQueue.main.async {
...
}
```
## It is:
```
{ asyncStuff() } ~> { mainThreadStuff() } *
```
\* http://ijoshsmith.com/2014/07/05/custom-threading-operator-in-swift/
# Let's make it a world standard!
# 10. CocoaPods Acknowledgement
# Thank you!
Daniel Saidi · [@danielsaidi](https://twitter.com/danielsaidi)