├── .gitattributes
├── .gitignore
├── .travis.yml
├── HowTo
├── CONTENTSCREENSHOT.png
├── HOWTOCHECKBOX.md
└── HOWTOPR.md
├── README.md
├── RoadmapProject
├── Roadmap.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
├── Script
│ ├── Content.yml
│ ├── Generated
│ │ ├── ESSENTIALROADMAP.png
│ │ ├── ESSENTIALROADMAP.txt
│ │ ├── ROADMAP.md
│ │ ├── ROADMAP.png
│ │ ├── ROADMAP.txt
│ │ └── Resources
│ │ │ └── iOS_Developer
│ │ │ ├── Computer_Science_knowledge
│ │ │ ├── Algorithms
│ │ │ │ ├── Big-O_notation
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── RESOURCES.md
│ │ │ │ └── Strings
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Programming_Paradigms
│ │ │ │ └── Functional
│ │ │ │ │ └── Functional_Reactive_Programming_Frameworks
│ │ │ │ │ └── RxSwift
│ │ │ │ │ └── RESOURCES.md
│ │ │ └── System_design
│ │ │ │ └── Problems
│ │ │ │ └── RESOURCES.md
│ │ │ ├── Practical_knowledge
│ │ │ ├── Caching_and_Persistency
│ │ │ │ ├── Core_Data
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Realm
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Cocoa_Touch
│ │ │ │ ├── Core_Location
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Core_Motion
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Foundation
│ │ │ │ │ ├── Collections
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Networking
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Notifications_vs_Delegation_vs_Observing
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ └── Serialization
│ │ │ │ │ │ ├── Codable
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── JSON
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── NSCoding
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── Protobuf
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ └── XML
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── UIKit
│ │ │ │ │ ├── Animations
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Layers
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Layout
│ │ │ │ │ │ ├── Autolayout
│ │ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ │ └── UIStackView
│ │ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── Frame-based
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Navigation
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ ├── Transform
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── UIApplication
│ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ ├── States
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── UIApplicationDelegate
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── UIViewController
│ │ │ │ │ │ ├── Lifecycle
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── UIViews
│ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ ├── UICollectionViews
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── UITableViews
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── UserNotifications
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Work_in_background_mode
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Debugging
│ │ │ │ └── Instruments
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Dependencies_management
│ │ │ │ ├── Carthage
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Cocoapods
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Swift_Package_Manager
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Getting_started
│ │ │ │ ├── First_pet_project_ideas
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── RESOURCES.md
│ │ │ ├── Languages
│ │ │ │ ├── Objective-C
│ │ │ │ │ ├── Blocks
│ │ │ │ │ │ ├── Memory_Management
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── KVC
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── KVO
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ ├── Runtime
│ │ │ │ │ │ ├── Method_messaging
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── NSZombies_and_KVO_implementation
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ └── Swizzling
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── Toll-free_bridging
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── RESOURCES.md
│ │ │ │ └── Swift
│ │ │ │ │ ├── Closures
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Enums
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Generics
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Initializers
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Protocols
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ ├── Runtime
│ │ │ │ │ ├── Method_dispatch
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── Structs
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Memory_management
│ │ │ │ ├── ARC
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ └── Weak_references
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Autorelease_pool
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Garbage_collection
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── MRC
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Memory_leaks
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── RESOURCES.md
│ │ │ │ ├── Retain_cycles
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Shallow_and_deep_copying
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Stack_and_Heap
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Value_vs_Reference_type
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Multithreading_and_concurrency
│ │ │ │ ├── GCD
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── NSOperation(Queue)
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── POSIX_and_NSThreads
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Perform_selector_family
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── Problems
│ │ │ │ │ ├── Deadlock
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ ├── Race_condition
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── Readers–writers_problem
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── RESOURCES.md
│ │ │ │ ├── Runloop
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Synchronization
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── RESOURCES.md
│ │ │ ├── Security
│ │ │ │ └── Keychain
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Software_Architecture
│ │ │ │ ├── Design_Patterns
│ │ │ │ │ ├── Architectural
│ │ │ │ │ │ ├── Clean_architecture
│ │ │ │ │ │ │ ├── RESOURCES.md
│ │ │ │ │ │ │ ├── RIBs
│ │ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ │ └── VIPER
│ │ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── Coordinators
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── MVC
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ ├── MVVM
│ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Cocoa
│ │ │ │ │ │ ├── Abstract_Factory
│ │ │ │ │ │ │ └── Class_cluster
│ │ │ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── Creational
│ │ │ │ │ │ └── Singleton
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Design_Principles
│ │ │ │ │ ├── Inversion_of_Control
│ │ │ │ │ └── Dependency_Injection
│ │ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ ├── Protocol-Oriented_Programming
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ │ └── SOLID
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Testing
│ │ │ │ ├── BDD
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ ├── TDD
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── Unit_Tests
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Tools
│ │ │ │ ├── Fastlane
│ │ │ │ │ └── RESOURCES.md
│ │ │ │ └── IDE
│ │ │ │ │ └── Xcode
│ │ │ │ │ └── Interface_Builder
│ │ │ │ │ └── RESOURCES.md
│ │ │ ├── Version_Control_Systems
│ │ │ │ └── Git
│ │ │ │ │ └── RESOURCES.md
│ │ │ └── tvOS
│ │ │ │ └── Focus_interactions
│ │ │ │ └── RESOURCES.md
│ │ │ └── RESOURCES.md
│ ├── main.swift
│ └── plantuml.jar
└── cocoapods-rome
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Target Support Files
│ │ ├── Pods-caesar
│ │ │ ├── Info.plist
│ │ │ ├── Pods-caesar-acknowledgements.markdown
│ │ │ ├── Pods-caesar-acknowledgements.plist
│ │ │ ├── Pods-caesar-dummy.m
│ │ │ ├── Pods-caesar-frameworks.sh
│ │ │ ├── Pods-caesar-resources.sh
│ │ │ ├── Pods-caesar-umbrella.h
│ │ │ ├── Pods-caesar.debug.xcconfig
│ │ │ ├── Pods-caesar.modulemap
│ │ │ └── Pods-caesar.release.xcconfig
│ │ └── Yaml
│ │ │ ├── Info.plist
│ │ │ ├── Yaml-dummy.m
│ │ │ ├── Yaml-prefix.pch
│ │ │ ├── Yaml-umbrella.h
│ │ │ ├── Yaml.modulemap
│ │ │ └── Yaml.xcconfig
│ └── Yaml
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ └── Sources
│ │ └── Yaml
│ │ ├── YAMLOperators.swift
│ │ ├── YAMLParser.swift
│ │ ├── YAMLRegex.swift
│ │ ├── YAMLResult.swift
│ │ ├── YAMLTokenizer.swift
│ │ └── Yaml.swift
│ └── Rome
│ └── Yaml.framework
│ ├── Headers
│ ├── Modules
│ ├── Resources
│ ├── Versions
│ ├── A
│ │ ├── Headers
│ │ │ ├── Yaml-Swift.h
│ │ │ └── Yaml-umbrella.h
│ │ ├── Modules
│ │ │ ├── Yaml.swiftmodule
│ │ │ │ ├── x86_64.swiftdoc
│ │ │ │ └── x86_64.swiftmodule
│ │ │ └── module.modulemap
│ │ ├── Resources
│ │ │ └── Info.plist
│ │ └── Yaml
│ └── Current
│ └── Yaml
├── generateAll.sh
└── headerImage.png
/.gitattributes:
--------------------------------------------------------------------------------
1 | RoadmapProject/Script/plantuml.jar linguist-vendored
2 | RoadmapProject/cocoapods-rome/* linguist-vendored
3 |
4 | RoadmapProject/Script/Generated/* linguist-generated
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #########################
2 | # .gitignore file for Xcode4 and Xcode5 Source projects
3 | #
4 | # Apple bugs, waiting for Apple to fix/respond:
5 | #
6 | # 15564624 - what does the xccheckout file in Xcode5 do? Where's the documentation?
7 | #
8 | # Version 2.6
9 | # For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
10 | #
11 | # 2015 updates:
12 | # - Fixed typo in "xccheckout" line - thanks to @lyck for pointing it out!
13 | # - Fixed the .idea optional ignore. Thanks to @hashier for pointing this out
14 | # - Finally added "xccheckout" to the ignore. Apple still refuses to answer support requests about this, but in practice it seems you should ignore it.
15 | # - minor tweaks from Jona and Coeur (slightly more precise xc* filtering/names)
16 | # 2014 updates:
17 | # - appended non-standard items DISABLED by default (uncomment if you use those tools)
18 | # - removed the edit that an SO.com moderator made without bothering to ask me
19 | # - researched CocoaPods .lock more carefully, thanks to Gokhan Celiker
20 | # 2013 updates:
21 | # - fixed the broken "save personal Schemes"
22 | # - added line-by-line explanations for EVERYTHING (some were missing)
23 | #
24 | # NB: if you are storing "built" products, this WILL NOT WORK,
25 | # and you should use a different .gitignore (or none at all)
26 | # This file is for SOURCE projects, where there are many extra
27 | # files that we want to exclude
28 | #
29 | #########################
30 |
31 | #####
32 | # OS X temporary files that should never be committed
33 | #
34 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html
35 |
36 | .DS_Store
37 |
38 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html
39 |
40 | .Trashes
41 |
42 | # c.f. http://www.westwind.com/reference/os-x/invisibles.html
43 |
44 | *.swp
45 |
46 | #
47 | # *.lock - this is used and abused by many editors for many different things.
48 | # For the main ones I use (e.g. Eclipse), it should be excluded
49 | # from source-control, but YMMV.
50 | # (lock files are usually local-only file-synchronization on the local FS that should NOT go in git)
51 | # c.f. the "OPTIONAL" section at bottom though, for tool-specific variations!
52 | #
53 | # In particular, if you're using CocoaPods, you'll want to comment-out this line:
54 | #*.lock
55 |
56 |
57 | #
58 | # profile - REMOVED temporarily (on double-checking, I can't find it in OS X docs?)
59 | #profile
60 |
61 |
62 | ####
63 | # Xcode temporary files that should never be committed
64 | #
65 | # NB: NIB/XIB files still exist even on Storyboard projects, so we want this...
66 |
67 | *~.nib
68 |
69 |
70 | ####
71 | # Xcode build files -
72 | #
73 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"
74 |
75 | DerivedData/
76 |
77 | # NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"
78 |
79 | build/
80 |
81 |
82 | #####
83 | # Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
84 | #
85 | # This is complicated:
86 | #
87 | # SOMETIMES you need to put this file in version control.
88 | # Apple designed it poorly - if you use "custom executables", they are
89 | # saved in this file.
90 | # 99% of projects do NOT use those, so they do NOT want to version control this file.
91 | # ..but if you're in the 1%, comment out the line "*.pbxuser"
92 |
93 | # .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html
94 |
95 | *.pbxuser
96 |
97 | # .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
98 |
99 | *.mode1v3
100 |
101 | # .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html
102 |
103 | *.mode2v3
104 |
105 | # .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file
106 |
107 | *.perspectivev3
108 |
109 | # NB: also, whitelist the default ones, some projects need to use these
110 | !default.pbxuser
111 | !default.mode1v3
112 | !default.mode2v3
113 | !default.perspectivev3
114 |
115 |
116 | ####
117 | # Xcode 4 - semi-personal settings
118 | #
119 | # Apple Shared data that Apple put in the wrong folder
120 | # c.f. http://stackoverflow.com/a/19260712/153422
121 | # FROM ANSWER: Apple says "don't ignore it"
122 | # FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
123 | # Up to you, but ... current advice: ignore it.
124 | *.xccheckout
125 |
126 | #
127 | #
128 | # OPTION 1: ---------------------------------
129 | # throw away ALL personal settings (including custom schemes!
130 | # - unless they are "shared")
131 | # As per build/ and DerivedData/, this ought to have a trailing slash
132 | #
133 | # NB: this is exclusive with OPTION 2 below
134 | xcuserdata/
135 |
136 | # OPTION 2: ---------------------------------
137 | # get rid of ALL personal settings, but KEEP SOME OF THEM
138 | # - NB: you must manually uncomment the bits you want to keep
139 | #
140 | # NB: this *requires* git v1.8.2 or above; you may need to upgrade to latest OS X,
141 | # or manually install git over the top of the OS X version
142 | # NB: this is exclusive with OPTION 1 above
143 | #
144 | #xcuserdata/**/*
145 |
146 | # (requires option 2 above): Personal Schemes
147 | #
148 | #!xcuserdata/**/xcschemes/*
149 |
150 | ####
151 | # XCode 4 workspaces - more detailed
152 | #
153 | # Workspaces are important! They are a core feature of Xcode - don't exclude them :)
154 | #
155 | # Workspace layout is quite spammy. For reference:
156 | #
157 | # /(root)/
158 | # /(project-name).xcodeproj/
159 | # project.pbxproj
160 | # /project.xcworkspace/
161 | # contents.xcworkspacedata
162 | # /xcuserdata/
163 | # /(your name)/xcuserdatad/
164 | # UserInterfaceState.xcuserstate
165 | # /xcshareddata/
166 | # /xcschemes/
167 | # (shared scheme name).xcscheme
168 | # /xcuserdata/
169 | # /(your name)/xcuserdatad/
170 | # (private scheme).xcscheme
171 | # xcschememanagement.plist
172 | #
173 | #
174 |
175 | ####
176 | # Xcode 4 - Deprecated classes
177 | #
178 | # Allegedly, if you manually "deprecate" your classes, they get moved here.
179 | #
180 | # We're using source-control, so this is a "feature" that we do not want!
181 |
182 | *.moved-aside
183 |
184 | ####
185 | # OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
186 | #
187 | # NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
188 | # modular gitignore: you have to put EVERYTHING in one file.
189 | #
190 | # COCOAPODS:
191 | #
192 | # c.f. http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock
193 | # c.f. http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
194 | #
195 | #!Podfile.lock
196 | #
197 | # RUBY:
198 | #
199 | # c.f. http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
200 | #
201 | #!Gemfile.lock
202 | #
203 | # IDEA:
204 | #
205 | # c.f. https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml
206 | #
207 | #.idea/workspace.xml
208 | #
209 | # TEXTMATE:
210 | #
211 | # -- UNVERIFIED: c.f. http://stackoverflow.com/a/50283/153422
212 | #
213 | #tm_build_errors
214 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: swift
2 | osx_image: xcode10
3 |
4 | install:
5 | - brew install libtool
6 | - brew link libtool
7 | - brew install graphviz
8 | - brew link --overwrite graphviz
9 |
10 | script: ./generateAll.sh
11 |
12 | deploy:
13 | provider: pages
14 | edge:
15 | branch: v1.8.47
16 | skip-cleanup: true
17 | github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure
18 | keep-history: true
19 | on:
20 | branch: master
21 | target-branch: master
22 |
23 | notifications:
24 | email:
25 | on_success: never # default: change
26 | on_failure: always # default: always
--------------------------------------------------------------------------------
/HowTo/CONTENTSCREENSHOT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/HowTo/CONTENTSCREENSHOT.png
--------------------------------------------------------------------------------
/HowTo/HOWTOCHECKBOX.md:
--------------------------------------------------------------------------------
1 | # How to tick a checkbox
2 |
3 | Markdown checkboxes are readonly, this meas if you want to tick a checkbox you have to make own copy of the repository (fork it) and then edit a particular checkbox.
4 |
5 | # Prerequisites
6 | You must undesrstand basics of Git to be able to follow the instruction below.
7 |
8 | # Instruction
9 |
10 | 1. Fork the repository on Github (once)
11 | 1. Checkout your repository (once)
12 | 1. Change checkbox from `[ ]` to `[x]` next to the topic you've finished.
13 | - [ ] before
14 | - [x] after
15 | 1. Commit and push changes.
16 | 1. Periodicaly pull changes from original repository to get new topics and materials.
--------------------------------------------------------------------------------
/HowTo/HOWTOPR.md:
--------------------------------------------------------------------------------
1 | ## How to add new topics or materials
2 |
3 | #### One file to rule them all
4 |
5 |
6 | ### How to add topics and materials
7 |
8 | 1. Open `RoadmapProject/Script/Content.yml` in your fork repository
9 | 1. Add topics and/or links to materials
10 | 1. Commit and push `Content.yml` changes to Github
11 | 2. Submit a pull request
12 |
13 | #### When your changes will be applied
14 |
15 | 1. Wait for your pull request to be merged
16 | 1. Wait up to 5 minutes for Travis CI to regenerate roadmap images and text version
17 |
18 |
19 | #### Prerequisites for adding topics and materials
20 |
21 | 1. Git
22 | 1. Fork of the repository
23 | 2. YAML editor, e.g. [Sublime Text](https://www.sublimetext.com/).
24 |
25 | ### How to run generation script locally (Optional)
26 | The generation script will generate images and the text version of the roadmap.
27 |
28 | 1. run `./generateAll.sh`
29 |
30 | **or**
31 |
32 | 1. Go to `RoadmapProject/Script`
33 | 2. Run `./main.swift`
34 |
35 | ##### Prerequisites for running the script locally
36 |
37 | 1. Latest Swift/Xcode
38 | 1. Prepare PlantUML:
39 | 1. Install [JDK](http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html)
40 | 1. Install Homebrew:
41 | - `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
42 | 1. Install GraphViz:
43 | - `brew install libtool`
44 | - `brew link libtool`
45 | - `brew install graphviz`
46 | - `brew link --overwrite graphviz`
47 | 1. Go to `Roadmap Project/Script/`
48 | 1. Run `java -jar plantuml.jar -testdot` to check if installed correctly.
49 |
50 | ##### How to debug script (Optional)
51 | Use `Roadmap Project/Roadmap.xcodeproj` to run and debug script.
52 |
53 | Xcode runs and debugs an executable binary, thus generated output will be put next to the binary.
54 |
55 | Always run script via terminal before submitting a PR.
56 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | # 🚀 iOS Developer Roadmap
3 | Roadmap to becoming an iOS developer in 2018.
4 |
5 | ## ☝️ What is it?
6 | This is a tree-like compilation of topics highly relevant to iOS development. Both image and text version are generated from human readable content file.
7 |
8 | ## ✌️ Who is it for?
9 | The roadmap will be helpul for:
10 |
11 | - anyone who wants to become an iOS developer
12 | - iOS developers who desire to become experts
13 | - iOS developers who are preparing for interviews and need to brush up knowledge
14 | - iOS developers who need to compile own set of interview questions
15 |
16 |
17 | ## 👌 Why these topics?
18 | See [this article](https://medium.com/@borlov/c9a24f413457) explaining selection of topics.
19 |
20 | ## 👨🎓 How to use this roadmap
21 | 1. Find a topic you want to study.
22 | 2. Go to corresponding resources section.
23 | 3. Study until you can confidently explain the topic to your cat.
24 | 4. (Optional) tick the checkbox next to the topic. [How to tick a checkbox](HowTo/HOWTOCHECKBOX.md).
25 | 4. Go to step 1.
26 |
27 | `Essential topics` are topics which significantly contribute to understanding of iOS development. Consequently, it is a good idea to study them first as they are often encountered on interviews.
28 |
29 | Start from `Getting started` section if you haven't done any iOS development yet.
30 |
31 | ## 🗺 Image version
32 | Roadmap of essential topics. Roadmap for all topics is [here.](RoadmapProject/Script/Generated/ROADMAP.png)
33 | 
34 |
35 | ## 📝 Text version
36 | [Text version with materials to study.](RoadmapProject/Script/Generated/ROADMAP.md)
37 |
38 | ## 🤝 How to contribute
39 |
40 | - add new topics to `Content.yml`
41 | - add missing study materials to `Content.yml`
42 | - throw ideas at me on [](https://twitter.com/bohdan_orlov)
43 |
44 |
45 | [The complete contribution guide.](HowTo/HOWTOPR.md)
46 |
47 |
48 | ## ☑️ TODO
49 | - [x] content file with topics and materials
50 | - [x] ability to generate README.md from the content file
51 | - [x] ability to generate Roadmap tree image from the content file
52 | - [ ] make generation script less miserable:
53 | - [x] make it readable 🤦
54 | - [ ] output Yaml format violation errors
55 | - [ ] handle errors of parsing Yaml into Topics and Resources
56 | - [ ] handle file read/write errors
57 | - [ ] handle image generation errors
58 | - [x] automatic regeneration of roadmap after every commit
59 | - [ ] automatic validation of content format on PR
60 | - [ ] make sure Travis doesn't deploy if generation script fails
61 |
62 | ## ⚙️ Generation status
63 | [](https://travis-ci.org/BohdanOrlov/iOS-Developer-Roadmap)
64 |
65 | ## 📃 License
66 |
67 | [](https://creativecommons.org/licenses/by/4.0/)
68 |
69 | ## 📊 Skills Matrix
70 | You might also like the [iOS Developer Skills Matrix](https://github.com/BohdanOrlov/ios-skills-matrix).
71 | 
72 |
73 | ## 📚 iOS and Swift Tutorials and Courses
74 |
75 | Learn iOS development & Swift online from the best iOS Swift tutorials and courses recommended by the programming community.
76 | https://hackr.io/tutorials/learn-ios-swift
77 |
--------------------------------------------------------------------------------
/RoadmapProject/Roadmap.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | CB4D061D203C5CC400520BD2 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB4D061C203C5CC400520BD2 /* main.swift */; };
11 | CB4D0625203C638500520BD2 /* Yaml.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB4D0624203C638500520BD2 /* Yaml.framework */; };
12 | CB4D0626203C645300520BD2 /* Yaml.framework in Copy Files */ = {isa = PBXBuildFile; fileRef = CB4D0624203C638500520BD2 /* Yaml.framework */; };
13 | CB4D0630203C6A6000520BD2 /* Content.yml in Copy Files */ = {isa = PBXBuildFile; fileRef = CB4D062F203C6A4B00520BD2 /* Content.yml */; };
14 | CB4D0632203DBC9900520BD2 /* plantuml.jar in Copy Files */ = {isa = PBXBuildFile; fileRef = CB4D0631203DBC9900520BD2 /* plantuml.jar */; };
15 | /* End PBXBuildFile section */
16 |
17 | /* Begin PBXCopyFilesBuildPhase section */
18 | CB4D0617203C5CC400520BD2 /* Copy Files */ = {
19 | isa = PBXCopyFilesBuildPhase;
20 | buildActionMask = 12;
21 | dstPath = "";
22 | dstSubfolderSpec = 10;
23 | files = (
24 | CB4D0632203DBC9900520BD2 /* plantuml.jar in Copy Files */,
25 | CB4D0630203C6A6000520BD2 /* Content.yml in Copy Files */,
26 | CB4D0626203C645300520BD2 /* Yaml.framework in Copy Files */,
27 | );
28 | name = "Copy Files";
29 | runOnlyForDeploymentPostprocessing = 0;
30 | };
31 | /* End PBXCopyFilesBuildPhase section */
32 |
33 | /* Begin PBXFileReference section */
34 | CB4D0619203C5CC400520BD2 /* Roadmap */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Roadmap; sourceTree = BUILT_PRODUCTS_DIR; };
35 | CB4D061C203C5CC400520BD2 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; };
36 | CB4D0624203C638500520BD2 /* Yaml.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Yaml.framework; path = "cocoapods-rome/Rome/Yaml.framework"; sourceTree = ""; };
37 | CB4D062D203C694500520BD2 /* cocoapods-rome */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "cocoapods-rome"; sourceTree = ""; };
38 | CB4D062F203C6A4B00520BD2 /* Content.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = Content.yml; sourceTree = ""; };
39 | CB4D0631203DBC9900520BD2 /* plantuml.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; path = plantuml.jar; sourceTree = ""; };
40 | /* End PBXFileReference section */
41 |
42 | /* Begin PBXFrameworksBuildPhase section */
43 | CB4D0616203C5CC400520BD2 /* Frameworks */ = {
44 | isa = PBXFrameworksBuildPhase;
45 | buildActionMask = 2147483647;
46 | files = (
47 | CB4D0625203C638500520BD2 /* Yaml.framework in Frameworks */,
48 | );
49 | runOnlyForDeploymentPostprocessing = 0;
50 | };
51 | /* End PBXFrameworksBuildPhase section */
52 |
53 | /* Begin PBXGroup section */
54 | CB4D0610203C5CC400520BD2 = {
55 | isa = PBXGroup;
56 | children = (
57 | CB4D061B203C5CC400520BD2 /* Script */,
58 | CB4D062D203C694500520BD2 /* cocoapods-rome */,
59 | CB4D061A203C5CC400520BD2 /* Products */,
60 | CB4D0623203C638500520BD2 /* Frameworks */,
61 | );
62 | sourceTree = "";
63 | };
64 | CB4D061A203C5CC400520BD2 /* Products */ = {
65 | isa = PBXGroup;
66 | children = (
67 | CB4D0619203C5CC400520BD2 /* Roadmap */,
68 | );
69 | name = Products;
70 | sourceTree = "";
71 | };
72 | CB4D061B203C5CC400520BD2 /* Script */ = {
73 | isa = PBXGroup;
74 | children = (
75 | CB4D0631203DBC9900520BD2 /* plantuml.jar */,
76 | CB4D061C203C5CC400520BD2 /* main.swift */,
77 | CB4D062F203C6A4B00520BD2 /* Content.yml */,
78 | );
79 | path = Script;
80 | sourceTree = "";
81 | };
82 | CB4D0623203C638500520BD2 /* Frameworks */ = {
83 | isa = PBXGroup;
84 | children = (
85 | CB4D0624203C638500520BD2 /* Yaml.framework */,
86 | );
87 | name = Frameworks;
88 | sourceTree = "";
89 | };
90 | /* End PBXGroup section */
91 |
92 | /* Begin PBXNativeTarget section */
93 | CB4D0618203C5CC400520BD2 /* Roadmap */ = {
94 | isa = PBXNativeTarget;
95 | buildConfigurationList = CB4D0620203C5CC400520BD2 /* Build configuration list for PBXNativeTarget "Roadmap" */;
96 | buildPhases = (
97 | CB4D0615203C5CC400520BD2 /* Sources */,
98 | CB4D0616203C5CC400520BD2 /* Frameworks */,
99 | CB4D0617203C5CC400520BD2 /* Copy Files */,
100 | );
101 | buildRules = (
102 | );
103 | dependencies = (
104 | );
105 | name = Roadmap;
106 | productName = Roadmap;
107 | productReference = CB4D0619203C5CC400520BD2 /* Roadmap */;
108 | productType = "com.apple.product-type.tool";
109 | };
110 | /* End PBXNativeTarget section */
111 |
112 | /* Begin PBXProject section */
113 | CB4D0611203C5CC400520BD2 /* Project object */ = {
114 | isa = PBXProject;
115 | attributes = {
116 | LastSwiftUpdateCheck = 0920;
117 | LastUpgradeCheck = 0920;
118 | ORGANIZATIONNAME = "Bohdan Orlov";
119 | TargetAttributes = {
120 | CB4D0618203C5CC400520BD2 = {
121 | CreatedOnToolsVersion = 9.2;
122 | ProvisioningStyle = Automatic;
123 | };
124 | };
125 | };
126 | buildConfigurationList = CB4D0614203C5CC400520BD2 /* Build configuration list for PBXProject "Roadmap" */;
127 | compatibilityVersion = "Xcode 8.0";
128 | developmentRegion = en;
129 | hasScannedForEncodings = 0;
130 | knownRegions = (
131 | en,
132 | );
133 | mainGroup = CB4D0610203C5CC400520BD2;
134 | productRefGroup = CB4D061A203C5CC400520BD2 /* Products */;
135 | projectDirPath = "";
136 | projectRoot = "";
137 | targets = (
138 | CB4D0618203C5CC400520BD2 /* Roadmap */,
139 | );
140 | };
141 | /* End PBXProject section */
142 |
143 | /* Begin PBXSourcesBuildPhase section */
144 | CB4D0615203C5CC400520BD2 /* Sources */ = {
145 | isa = PBXSourcesBuildPhase;
146 | buildActionMask = 2147483647;
147 | files = (
148 | CB4D061D203C5CC400520BD2 /* main.swift in Sources */,
149 | );
150 | runOnlyForDeploymentPostprocessing = 0;
151 | };
152 | /* End PBXSourcesBuildPhase section */
153 |
154 | /* Begin XCBuildConfiguration section */
155 | CB4D061E203C5CC400520BD2 /* Debug */ = {
156 | isa = XCBuildConfiguration;
157 | buildSettings = {
158 | ALWAYS_SEARCH_USER_PATHS = NO;
159 | CLANG_ANALYZER_NONNULL = YES;
160 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
161 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
162 | CLANG_CXX_LIBRARY = "libc++";
163 | CLANG_ENABLE_MODULES = YES;
164 | CLANG_ENABLE_OBJC_ARC = YES;
165 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
166 | CLANG_WARN_BOOL_CONVERSION = YES;
167 | CLANG_WARN_COMMA = YES;
168 | CLANG_WARN_CONSTANT_CONVERSION = YES;
169 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
170 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
171 | CLANG_WARN_EMPTY_BODY = YES;
172 | CLANG_WARN_ENUM_CONVERSION = YES;
173 | CLANG_WARN_INFINITE_RECURSION = YES;
174 | CLANG_WARN_INT_CONVERSION = YES;
175 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
176 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
177 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
178 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
179 | CLANG_WARN_STRICT_PROTOTYPES = YES;
180 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
181 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
182 | CLANG_WARN_UNREACHABLE_CODE = YES;
183 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
184 | CODE_SIGN_IDENTITY = "-";
185 | COPY_PHASE_STRIP = NO;
186 | DEBUG_INFORMATION_FORMAT = dwarf;
187 | ENABLE_STRICT_OBJC_MSGSEND = YES;
188 | ENABLE_TESTABILITY = YES;
189 | GCC_C_LANGUAGE_STANDARD = gnu11;
190 | GCC_DYNAMIC_NO_PIC = NO;
191 | GCC_NO_COMMON_BLOCKS = YES;
192 | GCC_OPTIMIZATION_LEVEL = 0;
193 | GCC_PREPROCESSOR_DEFINITIONS = (
194 | "DEBUG=1",
195 | "$(inherited)",
196 | );
197 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
198 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
199 | GCC_WARN_UNDECLARED_SELECTOR = YES;
200 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
201 | GCC_WARN_UNUSED_FUNCTION = YES;
202 | GCC_WARN_UNUSED_VARIABLE = YES;
203 | MACOSX_DEPLOYMENT_TARGET = 10.12;
204 | MTL_ENABLE_DEBUG_INFO = YES;
205 | ONLY_ACTIVE_ARCH = YES;
206 | SDKROOT = macosx;
207 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
208 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
209 | };
210 | name = Debug;
211 | };
212 | CB4D061F203C5CC400520BD2 /* Release */ = {
213 | isa = XCBuildConfiguration;
214 | buildSettings = {
215 | ALWAYS_SEARCH_USER_PATHS = NO;
216 | CLANG_ANALYZER_NONNULL = YES;
217 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
218 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
219 | CLANG_CXX_LIBRARY = "libc++";
220 | CLANG_ENABLE_MODULES = YES;
221 | CLANG_ENABLE_OBJC_ARC = YES;
222 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
223 | CLANG_WARN_BOOL_CONVERSION = YES;
224 | CLANG_WARN_COMMA = YES;
225 | CLANG_WARN_CONSTANT_CONVERSION = YES;
226 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
227 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
228 | CLANG_WARN_EMPTY_BODY = YES;
229 | CLANG_WARN_ENUM_CONVERSION = YES;
230 | CLANG_WARN_INFINITE_RECURSION = YES;
231 | CLANG_WARN_INT_CONVERSION = YES;
232 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
233 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
234 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
235 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
236 | CLANG_WARN_STRICT_PROTOTYPES = YES;
237 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
238 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
239 | CLANG_WARN_UNREACHABLE_CODE = YES;
240 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
241 | CODE_SIGN_IDENTITY = "-";
242 | COPY_PHASE_STRIP = NO;
243 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
244 | ENABLE_NS_ASSERTIONS = NO;
245 | ENABLE_STRICT_OBJC_MSGSEND = YES;
246 | GCC_C_LANGUAGE_STANDARD = gnu11;
247 | GCC_NO_COMMON_BLOCKS = YES;
248 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
249 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
250 | GCC_WARN_UNDECLARED_SELECTOR = YES;
251 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
252 | GCC_WARN_UNUSED_FUNCTION = YES;
253 | GCC_WARN_UNUSED_VARIABLE = YES;
254 | MACOSX_DEPLOYMENT_TARGET = 10.12;
255 | MTL_ENABLE_DEBUG_INFO = NO;
256 | SDKROOT = macosx;
257 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
258 | };
259 | name = Release;
260 | };
261 | CB4D0621203C5CC400520BD2 /* Debug */ = {
262 | isa = XCBuildConfiguration;
263 | buildSettings = {
264 | CODE_SIGN_STYLE = Automatic;
265 | FRAMEWORK_SEARCH_PATHS = (
266 | "$(inherited)",
267 | "$(PROJECT_DIR)/cocoapods-rome/Rome",
268 | );
269 | LD_RUNPATH_SEARCH_PATHS = "${DT_TOOLCHAIN_DIR}/usr/lib/swift/macosx/";
270 | PRODUCT_NAME = "$(TARGET_NAME)";
271 | SWIFT_VERSION = 4.0;
272 | };
273 | name = Debug;
274 | };
275 | CB4D0622203C5CC400520BD2 /* Release */ = {
276 | isa = XCBuildConfiguration;
277 | buildSettings = {
278 | CODE_SIGN_STYLE = Automatic;
279 | FRAMEWORK_SEARCH_PATHS = (
280 | "$(inherited)",
281 | "$(PROJECT_DIR)/cocoapods-rome/Rome",
282 | );
283 | LD_RUNPATH_SEARCH_PATHS = "${DT_TOOLCHAIN_DIR}/usr/lib/swift/macosx/";
284 | PRODUCT_NAME = "$(TARGET_NAME)";
285 | SWIFT_VERSION = 4.0;
286 | };
287 | name = Release;
288 | };
289 | /* End XCBuildConfiguration section */
290 |
291 | /* Begin XCConfigurationList section */
292 | CB4D0614203C5CC400520BD2 /* Build configuration list for PBXProject "Roadmap" */ = {
293 | isa = XCConfigurationList;
294 | buildConfigurations = (
295 | CB4D061E203C5CC400520BD2 /* Debug */,
296 | CB4D061F203C5CC400520BD2 /* Release */,
297 | );
298 | defaultConfigurationIsVisible = 0;
299 | defaultConfigurationName = Release;
300 | };
301 | CB4D0620203C5CC400520BD2 /* Build configuration list for PBXNativeTarget "Roadmap" */ = {
302 | isa = XCConfigurationList;
303 | buildConfigurations = (
304 | CB4D0621203C5CC400520BD2 /* Debug */,
305 | CB4D0622203C5CC400520BD2 /* Release */,
306 | );
307 | defaultConfigurationIsVisible = 0;
308 | defaultConfigurationName = Release;
309 | };
310 | /* End XCConfigurationList section */
311 | };
312 | rootObject = CB4D0611203C5CC400520BD2 /* Project object */;
313 | }
314 |
--------------------------------------------------------------------------------
/RoadmapProject/Roadmap.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/ESSENTIALROADMAP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/Script/Generated/ESSENTIALROADMAP.png
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/ESSENTIALROADMAP.txt:
--------------------------------------------------------------------------------
1 | @startuml
2 | left to right direction
3 | (iOS Developer) as (iOS Developer)
4 | (Practical knowledge) as (iOS Developer->Practical knowledge)
5 | (Languages) as (iOS Developer->Practical knowledge->Languages)
6 | (Objective-C) as (iOS Developer->Practical knowledge->Languages->Objective-C)
7 | (Blocks) as (iOS Developer->Practical knowledge->Languages->Objective-C->Blocks)
8 | (Runtime) as (iOS Developer->Practical knowledge->Languages->Objective-C->Runtime)
9 | (Swift) as (iOS Developer->Practical knowledge->Languages->Swift)
10 | (Initializers) as (iOS Developer->Practical knowledge->Languages->Swift->Initializers)
11 | (Protocols) as (iOS Developer->Practical knowledge->Languages->Swift->Protocols)
12 | (Structs) as (iOS Developer->Practical knowledge->Languages->Swift->Structs)
13 | (Enums) as (iOS Developer->Practical knowledge->Languages->Swift->Enums)
14 | (Memory management) as (iOS Developer->Practical knowledge->Memory management)
15 | (Stack and Heap) as (iOS Developer->Practical knowledge->Memory management->Stack and Heap)
16 | (Value vs Reference type) as (iOS Developer->Practical knowledge->Memory management->Value vs Reference type)
17 | (ARC) as (iOS Developer->Practical knowledge->Memory management->ARC)
18 | (Retain cycles) as (iOS Developer->Practical knowledge->Memory management->Retain cycles)
19 | (Memory leaks) as (iOS Developer->Practical knowledge->Memory management->Memory leaks)
20 | (Multithreading and concurrency) as (iOS Developer->Practical knowledge->Multithreading and concurrency)
21 | (GCD) as (iOS Developer->Practical knowledge->Multithreading and concurrency->GCD)
22 | (NSOperation[Queue]) as (iOS Developer->Practical knowledge->Multithreading and concurrency->NSOperation[Queue])
23 | (Runloop) as (iOS Developer->Practical knowledge->Multithreading and concurrency->Runloop)
24 | (Synchronization) as (iOS Developer->Practical knowledge->Multithreading and concurrency->Synchronization)
25 | (Cocoa Touch) as (iOS Developer->Practical knowledge->Cocoa Touch)
26 | (UIKit) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit)
27 | (UIApplication) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIApplication)
28 | (States) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIApplication->States)
29 | (UIViews) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews)
30 | (UITableViews) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews->UITableViews)
31 | (UICollectionViews) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews->UICollectionViews)
32 | (Layout) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout)
33 | (Frame-based) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout->Frame-based)
34 | (Autolayout) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout->Autolayout)
35 | (Navigation) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Navigation)
36 | (UIViewController) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViewController)
37 | (Lifecycle) as (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViewController->Lifecycle)
38 | (Foundation) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation)
39 | (Notifications vs Delegation vs Observing) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Notifications vs Delegation vs Observing)
40 | (Networking) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Networking)
41 | (Serialization) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization)
42 | (Codable) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization->Codable)
43 | (JSON) as (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization->JSON)
44 | (Work in background mode) as (iOS Developer->Practical knowledge->Cocoa Touch->Work in background mode)
45 | (Software Architecture) as (iOS Developer->Practical knowledge->Software Architecture)
46 | (Design Patterns) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns)
47 | (Cocoa) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Cocoa)
48 | (Architectural) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural)
49 | (MVC) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVC)
50 | (MVVM) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVVM)
51 | (MVP) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVP)
52 | (Clean architecture) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->Clean architecture)
53 | (Creational) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Creational)
54 | (Structural) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Structural)
55 | (Behavioural) as (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Behavioural)
56 | (Design Principles) as (iOS Developer->Practical knowledge->Software Architecture->Design Principles)
57 | (SOLID) as (iOS Developer->Practical knowledge->Software Architecture->Design Principles->SOLID)
58 | (Inversion of Control) as (iOS Developer->Practical knowledge->Software Architecture->Design Principles->Inversion of Control)
59 | (Dependency Injection) as (iOS Developer->Practical knowledge->Software Architecture->Design Principles->Inversion of Control->Dependency Injection)
60 | (Dependencies management) as (iOS Developer->Practical knowledge->Dependencies management)
61 | (Version Control Systems) as (iOS Developer->Practical knowledge->Version Control Systems)
62 | (Git) as (iOS Developer->Practical knowledge->Version Control Systems->Git)
63 | (Caching and Persistency) as (iOS Developer->Practical knowledge->Caching and Persistency)
64 | (Testing) as (iOS Developer->Practical knowledge->Testing)
65 | (Unit Tests) as (iOS Developer->Practical knowledge->Testing->Unit Tests)
66 | (Computer Science knowledge) as (iOS Developer->Computer Science knowledge)
67 | (Algorithms) as (iOS Developer->Computer Science knowledge->Algorithms)
68 | (Sorting) as (iOS Developer->Computer Science knowledge->Algorithms->Sorting)
69 | (Graph Theory) as (iOS Developer->Computer Science knowledge->Algorithms->Graph Theory)
70 | (Strings) as (iOS Developer->Computer Science knowledge->Algorithms->Strings)
71 | (Recursion) as (iOS Developer->Computer Science knowledge->Algorithms->Recursion)
72 | (Big-O notation) as (iOS Developer->Computer Science knowledge->Algorithms->Big-O notation)
73 | (Abstract Data Types) as (iOS Developer->Computer Science knowledge->Abstract Data Types)
74 | (Stack) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Stack)
75 | (Array) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Array)
76 | (List) as (iOS Developer->Computer Science knowledge->Abstract Data Types->List)
77 | (Map) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Map)
78 | (Set) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Set)
79 | (Graph) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Graph)
80 | (Queue) as (iOS Developer->Computer Science knowledge->Abstract Data Types->Queue)
81 | (System design) as (iOS Developer->Computer Science knowledge->System design)
82 |
83 | You -|> (iOS Developer)
84 | (iOS Developer) -down-> (iOS Developer->Practical knowledge)
85 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Languages)
86 | (iOS Developer->Practical knowledge->Languages) -down-> (iOS Developer->Practical knowledge->Languages->Objective-C)
87 | (iOS Developer->Practical knowledge->Languages->Objective-C) -down-> (iOS Developer->Practical knowledge->Languages->Objective-C->Blocks)
88 | (iOS Developer->Practical knowledge->Languages->Objective-C) -down-> (iOS Developer->Practical knowledge->Languages->Objective-C->Runtime)
89 | (iOS Developer->Practical knowledge->Languages) -down-> (iOS Developer->Practical knowledge->Languages->Swift)
90 | (iOS Developer->Practical knowledge->Languages->Swift) -down-> (iOS Developer->Practical knowledge->Languages->Swift->Initializers)
91 | (iOS Developer->Practical knowledge->Languages->Swift) -down-> (iOS Developer->Practical knowledge->Languages->Swift->Protocols)
92 | (iOS Developer->Practical knowledge->Languages->Swift) -down-> (iOS Developer->Practical knowledge->Languages->Swift->Structs)
93 | (iOS Developer->Practical knowledge->Languages->Swift) -down-> (iOS Developer->Practical knowledge->Languages->Swift->Enums)
94 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Memory management)
95 | (iOS Developer->Practical knowledge->Memory management) -down-> (iOS Developer->Practical knowledge->Memory management->Stack and Heap)
96 | (iOS Developer->Practical knowledge->Memory management) -down-> (iOS Developer->Practical knowledge->Memory management->Value vs Reference type)
97 | (iOS Developer->Practical knowledge->Memory management) -down-> (iOS Developer->Practical knowledge->Memory management->ARC)
98 | (iOS Developer->Practical knowledge->Memory management) -down-> (iOS Developer->Practical knowledge->Memory management->Retain cycles)
99 | (iOS Developer->Practical knowledge->Memory management) -down-> (iOS Developer->Practical knowledge->Memory management->Memory leaks)
100 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Multithreading and concurrency)
101 | (iOS Developer->Practical knowledge->Multithreading and concurrency) -down-> (iOS Developer->Practical knowledge->Multithreading and concurrency->GCD)
102 | (iOS Developer->Practical knowledge->Multithreading and concurrency) -down-> (iOS Developer->Practical knowledge->Multithreading and concurrency->NSOperation[Queue])
103 | (iOS Developer->Practical knowledge->Multithreading and concurrency) -down-> (iOS Developer->Practical knowledge->Multithreading and concurrency->Runloop)
104 | (iOS Developer->Practical knowledge->Multithreading and concurrency) -down-> (iOS Developer->Practical knowledge->Multithreading and concurrency->Synchronization)
105 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Cocoa Touch)
106 | (iOS Developer->Practical knowledge->Cocoa Touch) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit)
107 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIApplication)
108 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIApplication) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIApplication->States)
109 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews)
110 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews->UITableViews)
111 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViews->UICollectionViews)
112 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout)
113 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout->Frame-based)
114 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Layout->Autolayout)
115 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->Navigation)
116 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViewController)
117 | (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViewController) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->UIKit->UIViewController->Lifecycle)
118 | (iOS Developer->Practical knowledge->Cocoa Touch) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation)
119 | (iOS Developer->Practical knowledge->Cocoa Touch->Foundation) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Notifications vs Delegation vs Observing)
120 | (iOS Developer->Practical knowledge->Cocoa Touch->Foundation) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Networking)
121 | (iOS Developer->Practical knowledge->Cocoa Touch->Foundation) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization)
122 | (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization->Codable)
123 | (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Foundation->Serialization->JSON)
124 | (iOS Developer->Practical knowledge->Cocoa Touch) -down-> (iOS Developer->Practical knowledge->Cocoa Touch->Work in background mode)
125 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Software Architecture)
126 | (iOS Developer->Practical knowledge->Software Architecture) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns)
127 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Cocoa)
128 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural)
129 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVC)
130 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVVM)
131 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->MVP)
132 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Architectural->Clean architecture)
133 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Creational)
134 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Structural)
135 | (iOS Developer->Practical knowledge->Software Architecture->Design Patterns) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Patterns->Behavioural)
136 | (iOS Developer->Practical knowledge->Software Architecture) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Principles)
137 | (iOS Developer->Practical knowledge->Software Architecture->Design Principles) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Principles->SOLID)
138 | (iOS Developer->Practical knowledge->Software Architecture->Design Principles) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Principles->Inversion of Control)
139 | (iOS Developer->Practical knowledge->Software Architecture->Design Principles->Inversion of Control) -down-> (iOS Developer->Practical knowledge->Software Architecture->Design Principles->Inversion of Control->Dependency Injection)
140 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Dependencies management)
141 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Version Control Systems)
142 | (iOS Developer->Practical knowledge->Version Control Systems) -down-> (iOS Developer->Practical knowledge->Version Control Systems->Git)
143 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Caching and Persistency)
144 | (iOS Developer->Practical knowledge) -down-> (iOS Developer->Practical knowledge->Testing)
145 | (iOS Developer->Practical knowledge->Testing) -down-> (iOS Developer->Practical knowledge->Testing->Unit Tests)
146 | (iOS Developer) -up-> (iOS Developer->Computer Science knowledge)
147 | (iOS Developer->Computer Science knowledge) -up-> (iOS Developer->Computer Science knowledge->Algorithms)
148 | (iOS Developer->Computer Science knowledge->Algorithms) -up-> (iOS Developer->Computer Science knowledge->Algorithms->Sorting)
149 | (iOS Developer->Computer Science knowledge->Algorithms) -up-> (iOS Developer->Computer Science knowledge->Algorithms->Graph Theory)
150 | (iOS Developer->Computer Science knowledge->Algorithms) -up-> (iOS Developer->Computer Science knowledge->Algorithms->Strings)
151 | (iOS Developer->Computer Science knowledge->Algorithms) -up-> (iOS Developer->Computer Science knowledge->Algorithms->Recursion)
152 | (iOS Developer->Computer Science knowledge->Algorithms) -up-> (iOS Developer->Computer Science knowledge->Algorithms->Big-O notation)
153 | (iOS Developer->Computer Science knowledge) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types)
154 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Stack)
155 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Array)
156 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->List)
157 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Map)
158 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Set)
159 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Graph)
160 | (iOS Developer->Computer Science knowledge->Abstract Data Types) -up-> (iOS Developer->Computer Science knowledge->Abstract Data Types->Queue)
161 | (iOS Developer->Computer Science knowledge) -up-> (iOS Developer->Computer Science knowledge->System design)
162 |
163 | skinparam Shadowing false
164 | skinparam Padding 0
165 | skinparam BackgroundColor White
166 |
167 | skinparam Actor {
168 | BackgroundColor #F5F0F2
169 | BorderColor #17468A
170 | FontColor #E12D53
171 | FontName Helvetica
172 | FontSize 30
173 | FontStyle Bold
174 | }
175 |
176 | skinparam Arrow {
177 | Thickness 3
178 | Color #17468A
179 | }
180 |
181 | skinparam usecase {
182 | BorderThickness 3
183 | BackgroundColor #F5F0F2
184 | BorderColor #17468A
185 | FontColor #E12D53
186 | FontName Helvetica
187 | FontStyle Bold
188 | FontSize 20
189 | }
190 |
191 | @enduml
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/ROADMAP.md:
--------------------------------------------------------------------------------
1 | # iOS Developer Roadmap
2 | ## Text version
3 | Tapping on a link will take you to relevant materials.
4 |
5 | - [ ] [`iOS Developer`](Resources/iOS_Developer/RESOURCES.md)
6 | - [ ] [`Practical knowledge`](Resources/iOS_Developer/Practical_knowledge/RESOURCES.md)
7 | - [ ] [Getting started](Resources/iOS_Developer/Practical_knowledge/Getting_started/RESOURCES.md)
8 | - [ ] [First pet project ideas](Resources/iOS_Developer/Practical_knowledge/Getting_started/First_pet_project_ideas/RESOURCES.md)
9 | - [ ] [`Languages`](Resources/iOS_Developer/Practical_knowledge/Languages/RESOURCES.md)
10 | - [ ] [`Objective-C`](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/RESOURCES.md)
11 | - [ ] [`Blocks`](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Blocks/RESOURCES.md)
12 | - [ ] [Memory Management](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Blocks/Memory_Management/RESOURCES.md)
13 | - [ ] [KVC](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/KVC/RESOURCES.md)
14 | - [ ] [KVO](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/KVO/RESOURCES.md)
15 | - [ ] [Toll-free bridging](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Toll-free_bridging/RESOURCES.md)
16 | - [ ] [`Runtime`](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/RESOURCES.md)
17 | - [ ] [Method messaging](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/Method_messaging/RESOURCES.md)
18 | - [ ] [NSZombies and KVO implementation](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/NSZombies_and_KVO_implementation/RESOURCES.md)
19 | - [ ] [Swizzling](Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/Swizzling/RESOURCES.md)
20 | - [ ] [`Swift`](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/RESOURCES.md)
21 | - [ ] [Closures](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Closures/RESOURCES.md)
22 | - [ ] [`Initializers`](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Initializers/RESOURCES.md)
23 | - [ ] [Generics](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Generics/RESOURCES.md)
24 | - [ ] [`Protocols`](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Protocols/RESOURCES.md)
25 | - [ ] [`Structs`](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Structs/RESOURCES.md)
26 | - [ ] [`Enums`](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Enums/RESOURCES.md)
27 | - [ ] [Runtime](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Runtime/RESOURCES.md)
28 | - [ ] [Method dispatch](Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Runtime/Method_dispatch/RESOURCES.md)
29 | - [ ] [`Memory management`](Resources/iOS_Developer/Practical_knowledge/Memory_management/RESOURCES.md)
30 | - [ ] [`Stack and Heap`](Resources/iOS_Developer/Practical_knowledge/Memory_management/Stack_and_Heap/RESOURCES.md)
31 | - [ ] [`Value vs Reference type`](Resources/iOS_Developer/Practical_knowledge/Memory_management/Value_vs_Reference_type/RESOURCES.md)
32 | - [ ] [MRC](Resources/iOS_Developer/Practical_knowledge/Memory_management/MRC/RESOURCES.md)
33 | - [ ] [`ARC`](Resources/iOS_Developer/Practical_knowledge/Memory_management/ARC/RESOURCES.md)
34 | - [ ] [Weak references](Resources/iOS_Developer/Practical_knowledge/Memory_management/ARC/Weak_references/RESOURCES.md)
35 | - [ ] [`Retain cycles`](Resources/iOS_Developer/Practical_knowledge/Memory_management/Retain_cycles/RESOURCES.md)
36 | - [ ] [Garbage collection](Resources/iOS_Developer/Practical_knowledge/Memory_management/Garbage_collection/RESOURCES.md)
37 | - [ ] [`Memory leaks`](Resources/iOS_Developer/Practical_knowledge/Memory_management/Memory_leaks/RESOURCES.md)
38 | - [ ] [Shallow and deep copying](Resources/iOS_Developer/Practical_knowledge/Memory_management/Shallow_and_deep_copying/RESOURCES.md)
39 | - [ ] [Autorelease pool](Resources/iOS_Developer/Practical_knowledge/Memory_management/Autorelease_pool/RESOURCES.md)
40 | - [ ] [`Multithreading and concurrency`](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/RESOURCES.md)
41 | - [ ] [POSIX and NSThreads](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/POSIX_and_NSThreads/RESOURCES.md)
42 | - [ ] [Perform selector family](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Perform_selector_family/RESOURCES.md)
43 | - [ ] [`GCD`](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/GCD/RESOURCES.md)
44 | - [ ] [`NSOperation(Queue)`](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/NSOperation(Queue)/RESOURCES.md)
45 | - [ ] [`Runloop`](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Runloop/RESOURCES.md)
46 | - [ ] [`Synchronization`](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Synchronization/RESOURCES.md)
47 | - [ ] [Problems](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/RESOURCES.md)
48 | - [ ] [Race condition](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Race_condition/RESOURCES.md)
49 | - [ ] [Deadlock](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Deadlock/RESOURCES.md)
50 | - [ ] [Readers–writers problem](Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Readers–writers_problem/RESOURCES.md)
51 | - [ ] `Cocoa Touch`
52 | - [ ] [`UIKit`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/RESOURCES.md)
53 | - [ ] [`UIApplication`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/RESOURCES.md)
54 | - [ ] [`States`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/States/RESOURCES.md)
55 | - [ ] [UIApplicationDelegate](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/UIApplicationDelegate/RESOURCES.md)
56 | - [ ] [`UIViews`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/RESOURCES.md)
57 | - [ ] [`UITableViews`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/UITableViews/RESOURCES.md)
58 | - [ ] [`UICollectionViews`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/UICollectionViews/RESOURCES.md)
59 | - [ ] [Layers](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layers/RESOURCES.md)
60 | - [ ] [`Layout`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/RESOURCES.md)
61 | - [ ] [`Frame-based`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Frame-based/RESOURCES.md)
62 | - [ ] [`Autolayout`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Autolayout/RESOURCES.md)
63 | - [ ] [UIStackView](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Autolayout/UIStackView/RESOURCES.md)
64 | - [ ] [Animations](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Animations/RESOURCES.md)
65 | - [ ] [Transform](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Transform/RESOURCES.md)
66 | - [ ] [`Navigation`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Navigation/RESOURCES.md)
67 | - [ ] [`UIViewController`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViewController/RESOURCES.md)
68 | - [ ] [`Lifecycle`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViewController/Lifecycle/RESOURCES.md)
69 | - [ ] [`Foundation`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/RESOURCES.md)
70 | - [ ] [`Notifications vs Delegation vs Observing`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Notifications_vs_Delegation_vs_Observing/RESOURCES.md)
71 | - [ ] [Collections](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Collections/RESOURCES.md)
72 | - [ ] [`Networking`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Networking/RESOURCES.md)
73 | - [ ] [`Serialization`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/RESOURCES.md)
74 | - [ ] [NSCoding](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/NSCoding/RESOURCES.md)
75 | - [ ] [`Codable`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/Codable/RESOURCES.md)
76 | - [ ] [`JSON`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/JSON/RESOURCES.md)
77 | - [ ] [XML](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/XML/RESOURCES.md)
78 | - [ ] [Protobuf](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/Protobuf/RESOURCES.md)
79 | - [ ] [UserNotifications](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UserNotifications/RESOURCES.md)
80 | - [ ] [Core Location](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Core_Location/RESOURCES.md)
81 | - [ ] [Core Motion](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Core_Motion/RESOURCES.md)
82 | - [ ] [`Work in background mode`](Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Work_in_background_mode/RESOURCES.md)
83 | - [ ] `Software Architecture`
84 | - [ ] `Design Patterns`
85 | - [ ] [`Cocoa`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Cocoa/RESOURCES.md)
86 | - [ ] Abstract Factory
87 | - [ ] [Class cluster](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Cocoa/Abstract_Factory/Class_cluster/RESOURCES.md)
88 | - [ ] Adapter
89 | - [ ] Command Pattern
90 | - [ ] Chain of Responsibility
91 | - [ ] Decorator
92 | - [ ] Delegation
93 | - [ ] Categories
94 | - [ ] Facade
95 | - [ ] Memento
96 | - [ ] Observer
97 | - [ ] Proxy
98 | - [ ] Receptionist
99 | - [ ] Singleton
100 | - [ ] Template Method
101 | - [ ] MVC
102 | - [ ] [`Architectural`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/RESOURCES.md)
103 | - [ ] [`MVC`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/MVC/RESOURCES.md)
104 | - [ ] [`MVVM`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/MVVM/RESOURCES.md)
105 | - [ ] `MVP`
106 | - [ ] [`Clean architecture`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/RESOURCES.md)
107 | - [ ] [VIPER](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/VIPER/RESOURCES.md)
108 | - [ ] [RIBs](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/RIBs/RESOURCES.md)
109 | - [ ] [Coordinators](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Coordinators/RESOURCES.md)
110 | - [ ] `Creational`
111 | - [ ] Factory
112 | - [ ] Abstract Factory
113 | - [ ] Builder
114 | - [ ] Factory Method
115 | - [ ] Object Pool
116 | - [ ] Prototype
117 | - [ ] [Singleton](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Creational/Singleton/RESOURCES.md)
118 | - [ ] `Structural`
119 | - [ ] Adapter
120 | - [ ] Bridge
121 | - [ ] Composite
122 | - [ ] Decorator
123 | - [ ] Facade
124 | - [ ] Flyweight
125 | - [ ] Proxy
126 | - [ ] `Behavioural`
127 | - [ ] Command
128 | - [ ] Chain of responsibility
129 | - [ ] Interpreter
130 | - [ ] Iterator
131 | - [ ] Mediator
132 | - [ ] Memento
133 | - [ ] Observer
134 | - [ ] State
135 | - [ ] Strategy
136 | - [ ] Visitor
137 | - [ ] Concurrency
138 | - [ ] Anti-pattern
139 | - [ ] `Design Principles`
140 | - [ ] [`SOLID`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/SOLID/RESOURCES.md)
141 | - [ ] `Inversion of Control`
142 | - [ ] [`Dependency Injection`](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/Inversion_of_Control/Dependency_Injection/RESOURCES.md)
143 | - [ ] Service Locator
144 | - [ ] [Protocol-Oriented Programming](Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/Protocol-Oriented_Programming/RESOURCES.md)
145 | - [ ] `Dependencies management`
146 | - [ ] [Cocoapods](Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Cocoapods/RESOURCES.md)
147 | - [ ] [Carthage](Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Carthage/RESOURCES.md)
148 | - [ ] [Swift Package Manager](Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Swift_Package_Manager/RESOURCES.md)
149 | - [ ] Project structure and File/Group organisation
150 | - [ ] `Version Control Systems`
151 | - [ ] [`Git`](Resources/iOS_Developer/Practical_knowledge/Version_Control_Systems/Git/RESOURCES.md)
152 | - [ ] Debugging
153 | - [ ] [Instruments](Resources/iOS_Developer/Practical_knowledge/Debugging/Instruments/RESOURCES.md)
154 | - [ ] Best practices
155 | - [ ] Checklists
156 | - [ ] UX
157 | - [ ] `Caching and Persistency`
158 | - [ ] [Core Data](Resources/iOS_Developer/Practical_knowledge/Caching_and_Persistency/Core_Data/RESOURCES.md)
159 | - [ ] [Realm](Resources/iOS_Developer/Practical_knowledge/Caching_and_Persistency/Realm/RESOURCES.md)
160 | - [ ] YAPDatabase
161 | - [ ] `Testing`
162 | - [ ] [`Unit Tests`](Resources/iOS_Developer/Practical_knowledge/Testing/Unit_Tests/RESOURCES.md)
163 | - [ ] Snapshot Tests
164 | - [ ] Functional test
165 | - [ ] [TDD](Resources/iOS_Developer/Practical_knowledge/Testing/TDD/RESOURCES.md)
166 | - [ ] [BDD](Resources/iOS_Developer/Practical_knowledge/Testing/BDD/RESOURCES.md)
167 | - [ ] Performance optimization
168 | - [ ] Increase FPS
169 | - [ ] Decrease memory footprint
170 | - [ ] Code signing
171 | - [ ] Tools
172 | - [ ] IDE
173 | - [ ] Xcode
174 | - [ ] [Interface Builder](Resources/iOS_Developer/Practical_knowledge/Tools/IDE/Xcode/Interface_Builder/RESOURCES.md)
175 | - [ ] Swiftlint
176 | - [ ] Sourcery
177 | - [ ] [Fastlane](Resources/iOS_Developer/Practical_knowledge/Tools/Fastlane/RESOURCES.md)
178 | - [ ] Continuous Integration
179 | - [ ] Jenkins
180 | - [ ] Xcode server
181 | - [ ] Security
182 | - [ ] [Keychain](Resources/iOS_Developer/Practical_knowledge/Security/Keychain/RESOURCES.md)
183 | - [ ] Security Transforms API
184 | - [ ] tvOS
185 | - [ ] [Focus interactions](Resources/iOS_Developer/Practical_knowledge/tvOS/Focus_interactions/RESOURCES.md)
186 | - [ ] WatchKit
187 | - [ ] `Computer Science knowledge`
188 | - [ ] [`Algorithms`](Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/RESOURCES.md)
189 | - [ ] `Sorting`
190 | - [ ] `Graph Theory`
191 | - [ ] Trees
192 | - [ ] [`Strings`](Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/Strings/RESOURCES.md)
193 | - [ ] Greedy
194 | - [ ] Dynamic Programming
195 | - [ ] Bit Manipulation
196 | - [ ] `Recursion`
197 | - [ ] Game Theory
198 | - [ ] NP Complete
199 | - [ ] [`Big-O notation`](Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/Big-O_notation/RESOURCES.md)
200 | - [ ] `Abstract Data Types`
201 | - [ ] `Stack`
202 | - [ ] `Array`
203 | - [ ] `List`
204 | - [ ] `Map`
205 | - [ ] Multimap
206 | - [ ] `Set`
207 | - [ ] Multiset (Bag)
208 | - [ ] `Graph`
209 | - [ ] Tree
210 | - [ ] `Queue`
211 | - [ ] Priority Queue
212 | - [ ] Double-ended priority queue
213 | - [ ] Double-ended queue
214 | - [ ] `System design`
215 | - [ ] [Problems](Resources/iOS_Developer/Computer_Science_knowledge/System_design/Problems/RESOURCES.md)
216 | - [ ] Programming Paradigms
217 | - [ ] Object-Oriented
218 | - [ ] Functional
219 | - [ ] Functional Reactive Programming Frameworks
220 | - [ ] React Native
221 | - [ ] [RxSwift](Resources/iOS_Developer/Computer_Science_knowledge/Programming_Paradigms/Functional/Functional_Reactive_Programming_Frameworks/RxSwift/RESOURCES.md)
222 | - [ ] RxRealm, RxDataSources
223 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/ROADMAP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/Script/Generated/ROADMAP.png
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/Big-O_notation/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Computer Science knowledge > Algorithms > Big-O notation
2 |
3 | ### Articles
4 | - [ ] [Big O notation](https://en.wikipedia.org/wiki/Big_O_notation)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Computer Science knowledge > Algorithms
2 |
3 | ### Websites
4 | - [ ] [Swift Algorithm Club](https://github.com/raywenderlich/swift-algorithm-club)
5 |
6 | ### Courses
7 | - [ ] [Algorithms Specialization](https://www.coursera.org/specializations/algorithms)
8 |
9 | ### Practice
10 | - [ ] [HackerRank](https://www.hackerrank.com/dashboard)
11 | - [ ] [LeetCode](https://leetcode.com/explore/)
12 | - [ ] [topcoder](https://www.topcoder.com/member-onboarding/learning-practicing-skills/)
13 |
14 |
15 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Computer_Science_knowledge/Algorithms/Strings/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Computer Science knowledge > Algorithms > Strings
2 |
3 | ### Articles
4 | - [ ] [Swift Algorithm Club: Boyer Moore String Search Algorithm](https://www.raywenderlich.com/163964/swift-algorithm-club-booyer-moore-string-search-algorithm)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Computer_Science_knowledge/Programming_Paradigms/Functional/Functional_Reactive_Programming_Frameworks/RxSwift/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Computer Science knowledge > Programming Paradigms > Functional > Functional Reactive Programming Frameworks > RxSwift
2 |
3 | ### Articles
4 | - [ ] [Interactive diagrams of Rx Observables](http://rxmarbles.com)
5 |
6 | ### Videos
7 | - [ ] [Learning Path: RxSwift from Start to Finish](https://academy.realm.io/posts/learning-path-rxswift-from-start-to-finish/)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Computer_Science_knowledge/System_design/Problems/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Computer Science knowledge > System design > Problems
2 |
3 | ### Articles
4 | - [ ] [Top 10 System Design Interview Questions for Software Engineers](https://hackernoon.com/top-10-system-design-interview-questions-for-software-engineers-8561290f0444)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Caching_and_Persistency/Core_Data/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Caching and Persistency > Core Data
2 |
3 | ### Articles
4 | - [ ] [Core Data Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index.html)
5 | - [ ] [Core Data from Scratch: Concurrency](https://code.tutsplus.com/tutorials/core-data-from-scratch-concurrency--cms-22131)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Caching_and_Persistency/Realm/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Caching and Persistency > Realm
2 |
3 | ### Websites
4 | - [ ] [Realm](https://realm.io/docs/swift/latest)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Core_Location/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Core Location
2 |
3 | ### Articles
4 | - [ ] [iOS Location Tracking](https://badootech.badoo.com/ios-location-tracking-aac4e2323629)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Core_Motion/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Core Motion
2 |
3 | ### Documentation
4 | - [ ] [Core Motion](https://developer.apple.com/documentation/coremotion)
5 |
6 | ### WWDC
7 | - [ ] [Health and Fitness with Core Motion](https://developer.apple.com/videos/play/wwdc2016/713/)
8 | - [ ] [Creating Immersive Apps with Core Motion](https://developer.apple.com/videos/play/wwdc2017/704/)
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Collections/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Collections
2 |
3 | ### Articles
4 | - [ ] [The Foundation Collection Classes](https://www.objc.io/issues/7-foundation/collections/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Networking/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Networking
2 |
3 | ### Articles
4 | - [ ] [A Crash Course on Networking in iOS](https://www.sitepoint.com/a-crash-course-on-networking-in-ios/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Notifications_vs_Delegation_vs_Observing/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Notifications vs Delegation vs Observing
2 |
3 | ### Articles
4 | - [ ] [WHEN TO USE DELEGATION, NOTIFICATION, OR OBSERVATION IN IOS](https://shinesolutions.com/2011/06/14/delegation-notification-and-observation/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation
2 |
3 | ### Articles
4 | - [ ] [Foundation Framework](https://developer.apple.com/documentation/foundation)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/Codable/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization > Codable
2 |
3 | ### Articles
4 | - [ ] [Swift Codability](https://medium.com/@ravi.aggarwal61/swift-codability-d0d232065cad)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/JSON/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization > JSON
2 |
3 | ### Articles
4 | - [ ] [Swift Blog: Working with JSON in Swift](https://developer.apple.com/swift/blog/?id=37)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/NSCoding/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization > NSCoding
2 |
3 | ### Articles
4 | - [ ] [NSCoding / NSKeyedArchiver](http://nshipster.com/nscoding/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/Protobuf/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization > Protobuf
2 |
3 | ### Articles
4 | - [ ] [Introduction to Protocol Buffers on iOS](https://www.raywenderlich.com/149335/introduction-protocol-buffers-ios)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization
2 |
3 | ### Articles
4 | - [ ] [Encoding, Decoding and Serialization in Swift 4](https://www.raywenderlich.com/172145/encoding-decoding-and-serialization-in-swift-4)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Foundation/Serialization/XML/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Foundation > Serialization > XML
2 |
3 | ### Articles
4 | - [ ] [A Beginner’s Guide to XML Parsing in Swift](http://leaks.wanari.com/2016/08/24/xml-parsing-swift/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Animations/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Animations
2 |
3 | ### Articles
4 | - [ ] [objc.io Animations](https://www.objc.io/issues/12-animations/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layers/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Layers
2 |
3 | ### Articles
4 | - [ ] [CALayer Tutorial for iOS: Getting Started](https://www.raywenderlich.com/169004/calayer-tutorial-ios-getting-started)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Autolayout/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Layout > Autolayout
2 |
3 | ### Articles
4 | - [ ] [The Ultimate Guide To IOS AutoLayout](https://digitalleaves.com/ultimate-guide-autolayout/)
5 | - [ ] [Understanding Autolayout Constraints In Depth](https://medium.com/@ravi.aggarwal61/understanding-auto-layout-constraints-part-1-844474e81d1e)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Autolayout/UIStackView/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Layout > Autolayout > UIStackView
2 |
3 | ### Articles
4 | - [ ] [Introduction To UIStackView](https://www.raywenderlich.com/160646/uistackview-tutorial-introducing-stack-views-2)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/Frame-based/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Layout > Frame-based
2 |
3 | ### Articles
4 | - [ ] [CGGeometry](http://nshipster.com/cggeometry/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Layout/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Layout
2 |
3 | ### Articles
4 | - [ ] [Demystifying iOS Layout](http://tech.gc.com/demystifying-ios-layout/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Navigation/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Navigation
2 |
3 | ### Articles
4 | - [ ] [Improve your iOS Architecture with FlowControllers](http://merowing.info/2016/01/improve-your-ios-architecture-with-flowcontrollers/)
5 | - [ ] [Screen navigation in iOS](https://badootech.badoo.com/screen-navigation-in-ios-dd99b09228b2)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit
2 |
3 | ### Articles
4 | - [ ] [UIKit Framework](https://developer.apple.com/documentation/uikit)
5 | - [ ] [How to make friends with UIKit](https://badootech.badoo.com/how-to-make-friends-with-uikit-934ea431ffef)
6 |
7 | ### Courses
8 | - [ ] [UIKit fundamentals](https://eg.udacity.com/course/uikit-fundamentals--ud788)
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/Transform/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > Transform
2 |
3 | ### Articles
4 | - [ ] [Understanding UIView’s transform property (part 1)](https://ninjapro.wordpress.com/2016/08/23/understanding-uiviews-transform-property-part-1/)
5 | - [ ] [Understanding UIView’s transform property (final)](https://ninjapro.wordpress.com/2016/08/27/understanding-uiviews-transform-property-final-part/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIApplication
2 |
3 | ### Articles
4 | - [ ] [Managing Your App's Life Cycle](https://developer.apple.com/documentation/uikit/core_app/managing_your_app_s_life_cycle)
5 | - [ ] [UIApplication](https://developer.apple.com/documentation/uikit/uiapplication)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/States/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIApplication > States
2 |
3 | ### Articles
4 | - [ ] [The App Life Cycle](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIApplication/UIApplicationDelegate/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIApplication > UIApplicationDelegate
2 |
3 | ### Articles
4 | - [ ] [UIApplicationDelegate](https://developer.apple.com/documentation/uikit/uiapplicationdelegate)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViewController/Lifecycle/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIViewController > Lifecycle
2 |
3 | ### Articles
4 | - [ ] [Understand the View Controller Lifecycle](https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/WorkWithViewControllers.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViewController/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIViewController
2 |
3 | ### Articles
4 | - [ ] [The Role of View Controllers](https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIViews
2 |
3 | ### Articles
4 | - [ ] [UIView Fundamentals](https://www.weheartswift.com/uiview-fundamentals/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/UICollectionViews/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIViews > UICollectionViews
2 |
3 | ### Articles
4 | - [ ] [Custom Collection View Layouts](https://www.objc.io/issues/3-views/collection-view-layouts/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UIKit/UIViews/UITableViews/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UIKit > UIViews > UITableViews
2 |
3 | ### Articles
4 | - [ ] [Clean Table View Code](https://www.objc.io/issues/1-view-controllers/table-views/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/UserNotifications/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > UserNotifications
2 |
3 | ### Articles
4 | - [ ] [UserNotifications in Swift 3 (Part 1)](https://medium.com/yay-its-erica/usernotifications-in-swift-3-part-1-d250e54440c1)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Cocoa_Touch/Work_in_background_mode/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Cocoa Touch > Work in background mode
2 |
3 | ### Articles
4 | - [ ] [Background Modes Tutorial: Getting Started](https://www.raywenderlich.com/143128/background-modes-tutorial-getting-started)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Debugging/Instruments/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Debugging > Instruments
2 |
3 | ### Articles
4 | - [ ] [Instruments Tutorial with Swift: Getting Started](https://www.raywenderlich.com/166125/instruments-tutorial-swift-getting-started)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Carthage/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Dependencies management > Carthage
2 |
3 | ### Articles
4 | - [ ] [Carthage Tutorial: Getting Started](https://www.raywenderlich.com/165660/carthage-tutorial-getting-started-2)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Cocoapods/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Dependencies management > Cocoapods
2 |
3 | ### Articles
4 | - [ ] [CocoaPods Tutorial for Swift: Getting Started](https://www.raywenderlich.com/156971/cocoapods-tutorial-swift-getting-started)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Dependencies_management/Swift_Package_Manager/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Dependencies management > Swift Package Manager
2 |
3 | ### Websites
4 | - [ ] [Swift Package Manager](https://swift.org/package-manager/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Getting_started/First_pet_project_ideas/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Getting started > First pet project ideas
2 |
3 | ### Articles
4 | - [ ] [So You Want To Make iPhone Apps? 10 Projects For Beginners](https://www.makeuseof.com/tag/want-make-iphone-apps-6-projects-beginners/)
5 |
6 | ### Github
7 | - [ ] [awesome-app-ideas](https://github.com/tastejs/awesome-app-ideas)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Getting_started/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Getting started
2 |
3 | ### Tutorials
4 | - [ ] [Jump Right In](https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/)
5 | - [ ] [Raywenderlich.com](https://www.raywenderlich.com/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Blocks/Memory_Management/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Blocks > Memory Management
2 |
3 | ### Articles
4 | - [ ] [How blocks are implemented (and the consequences)](https://www.cocoawithlove.com/2009/10/how-blocks-are-implemented-and.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Blocks/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Blocks
2 |
3 | ### Articles
4 | - [ ] [Friday Q&A 2009-08-14: Practical Blocks](https://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html)
5 |
6 | ### Cheat sheet
7 | - [ ] [How Do I Declare A Block in Objective-C?](http://fuckingblocksyntax.com/)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/KVC/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > KVC
2 |
3 | ### Articles
4 | - [ ] [About Key-Value Coding](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html)
5 | - [ ] [Friday Q&A 2013-02-08: Let's Build Key-Value Coding](https://www.mikeash.com/pyblog/friday-qa-2013-02-08-lets-build-key-value-coding.html)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/KVO/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > KVO
2 |
3 | ### Articles
4 | - [ ] [Introduction to Key-Value Observing Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html)
5 | - [ ] [Key-Value Observing](http://nshipster.com/key-value-observing/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C
2 |
3 | ### Books
4 | - [ ] [Effective Objective-C 2.0: 52 Specific Ways to Improve Your IOS and OS X Programs](https://www.amazon.co.uk/Effective-Objective-C-2-0-Specific-Development/dp/0321917014)
5 |
6 | ### Blogs
7 | - [ ] [NSBlog](https://www.mikeash.com/pyblog/)
8 | - [ ] [objc.io](https://www.objc.io/)
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/Method_messaging/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Runtime > Method messaging
2 |
3 | ### Articles
4 | - [ ] [How Objective-C messaging works](http://dantoml.com/how-objective-c-messaging-works/)
5 | - [ ] [Friday Q&A 2009-03-20: Objective-C Messaging](https://www.mikeash.com/pyblog/friday-qa-2009-03-20-objective-c-messaging.html)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/NSZombies_and_KVO_implementation/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Runtime > NSZombies and KVO implementation
2 |
3 | ### Articles
4 | - [ ] [KVO Implementation Official Documentation](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)
5 | - [ ] [KVO Implementation Analysis By MikeAsh](https://www.mikeash.com/pyblog/friday-qa-2009-01-23.html)
6 | - [ ] [KVO Implementation Demo](https://github.com/okcomp/ImplementKVO)
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Runtime
2 |
3 | ### Articles
4 | - [ ] [Objective-C Runtime Programming Guide](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Runtime/Swizzling/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Runtime > Swizzling
2 |
3 | ### Articles
4 | - [ ] [Method Swizzling](http://nshipster.com/method-swizzling/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Objective-C/Toll-free_bridging/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Objective-C > Toll-free bridging
2 |
3 | ### Articles
4 | - [ ] [Friday Q&A 2010-01-22: Toll Free Bridging Internals](https://www.mikeash.com/pyblog/friday-qa-2010-01-22-toll-free-bridging-internals.html)
5 | - [ ] [TOLL-FREE BRIDGING AND UNMANAGED](http://en.swifter.tips/toll-free/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages
2 |
3 | ### Articles
4 | - [ ] [Should You Learn Swift or Objective-C?](http://blog.teamtreehouse.com/learn-swift-or-objective-c)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Closures/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Closures
2 |
3 | ### Articles
4 | - [ ] [The Swift Programming Language: Closures](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html)
5 |
6 | ### Cheat sheet
7 | - [ ] [How Do I Declare a Closure in Swift?](http://fuckingclosuresyntax.com/)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Enums/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Enums
2 |
3 | ### Articles
4 | - [ ] [The Swift Programming Language: Enumerations](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Generics/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Generics
2 |
3 | ### Articles
4 | - [ ] [Generics in Swift 4](https://medium.com/developermind/generics-in-swift-4-4f802cd6f53c)
5 | - [ ] [Swift Generics Tutorial: Getting Started](https://www.raywenderlich.com/154371/swift-generics-tutorial-getting-started)
6 | - [ ] [The Swift Programming Language: Generics](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html)
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Initializers/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Initializers
2 |
3 | ### Articles
4 | - [ ] [Initialization In Depth, Part 1/2](https://www.raywenderlich.com/119922/swift-tutorial-initialization-part-1)
5 | - [ ] [Initialization In Depth, Part 2/2](https://www.raywenderlich.com/121603/swift-tutorial-initialization-part-2)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Protocols/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Protocols
2 |
3 | ### Articles
4 | - [ ] [Separation of concerns using protocols in Swift](https://www.swiftbysundell.com/posts/separation-of-concerns-using-protocols-in-swift)
5 | - [ ] [Replacing legacy code using Swift protocols](https://www.swiftbysundell.com/posts/replacing-legacy-code-using-swift-protocols)
6 | - [ ] [Swift Optional Protocol Methods](https://useyourloaf.com/blog/swift-optional-protocol-methods/)
7 | - [ ] [The Swift Programming Language: Protocols](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift
2 |
3 | ### Books
4 | - [ ] [The Swift Programming Language](https://geo.itunes.apple.com/us/book/the-swift-programming-language-swift-4-1/id881256329?mt=11)
5 | - [ ] [Advanced Swift](https://www.objc.io/books/advanced-swift/)
6 | - [ ] [Swift Apprentice](https://store.raywenderlich.com/products/swift-apprentice?_ga=2.74566868.712179774.1519384552-896491817.1510924963)
7 |
8 | ### Blogs
9 | - [ ] [SWIFT BY SUNDELL](https://www.swiftbysundell.com/)
10 | - [ ] [SWIFTER](http://en.swifter.tips)
11 |
12 |
13 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Runtime/Method_dispatch/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Runtime > Method dispatch
2 |
3 | ### Articles
4 | - [ ] [Method Dispatch in Swift](https://www.raizlabs.com/dev/2016/12/swift-method-dispatch/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Runtime/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Runtime
2 |
3 | ### Articles
4 | - [ ] [How does iOS Swift Runtime work](https://stackoverflow.com/questions/37315295/how-does-ios-swift-runtime-work)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Languages/Swift/Structs/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Languages > Swift > Structs
2 |
3 | ### Articles
4 | - [ ] [The Swift Programming Language: Classes and Structures](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/ARC/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > ARC
2 |
3 | ### Articles
4 | - [ ] [Beginning ARC in iOS 5 Tutorial Part 1](https://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/ARC/Weak_references/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > ARC > Weak references
2 |
3 | ### Articles
4 | - [ ] [Friday Q&A 2015-12-11: Swift Weak References](https://www.mikeash.com/pyblog/friday-qa-2015-12-11-swift-weak-references.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Autorelease_pool/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Autorelease pool
2 |
3 | ### Articles
4 | - [ ] [@AUTORELEASEPOOL](http://en.swifter.tips/autoreleasepool/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Garbage_collection/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Garbage collection
2 |
3 | ### Quora
4 | - [ ] [How does garbage collection happen in iOS?](https://www.quora.com/How-does-garbage-collection-happen-in-iOS)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/MRC/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > MRC
2 |
3 | ### Articles
4 | - [ ] [Memory Management Tutorial for iOS](https://www.raywenderlich.com/2657/memory-management-tutorial-for-ios)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Memory_leaks/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Memory leaks
2 |
3 | ### Articles
4 | - [ ] [Swift’s ARC and Memory Leaks](https://medium.com/ios-seminar/swifts-arc-and-memory-leaks-1a227cae55da)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management
2 |
3 | ### Articles
4 | - [ ] [About Memory Management](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html)
5 |
6 | ### Quora
7 | - [ ] [How do reference counting and garbage collection compare?](https://www.quora.com/How-do-reference-counting-and-garbage-collection-compare)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Retain_cycles/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Retain cycles
2 |
3 | ### Articles
4 | - [ ] [Retain Cycles, Weak and Unowned in Swift](http://www.thomashanning.com/retain-cycles-weak-unowned-swift/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Shallow_and_deep_copying/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Shallow and deep copying
2 |
3 | ### Articles
4 | - [ ] [Object copying](https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/CopyFunctions.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Stack_and_Heap/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Stack and Heap
2 |
3 | ### Articles
4 | - [ ] [Stack and Heap Objects in Objective-C](https://www.mikeash.com/pyblog/friday-qa-2010-01-15-stack-and-heap-objects-in-objective-c.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Memory_management/Value_vs_Reference_type/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Memory management > Value vs Reference type
2 |
3 | ### Articles
4 | - [ ] [Swift Blog: Value and Reference Types](https://developer.apple.com/swift/blog/?id=10)
5 | - [ ] [Value and Reference Types](https://thatthinginswift.com/value-and-reference-types/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/GCD/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > GCD
2 |
3 | ### Articles
4 | - [ ] [Grand Central Dispatch In-Depth: Part 1/2](https://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1)
5 |
6 | ### Courses
7 | - [ ] [Grand Central Dispatch GCD](https://eg.udacity.com/course/grand-central-dispatch-gcd--ud576)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/NSOperation(Queue)/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > NSOperation(Queue)
2 |
3 | ### Articles
4 | - [ ] [NSOperation](http://nshipster.com/nsoperation/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/POSIX_and_NSThreads/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > POSIX and NSThreads
2 |
3 | ### Articles
4 | - [ ] [Multithreading: CreatingThreads](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Perform_selector_family/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Perform selector family
2 |
3 | ### Articles
4 | - [ ] [performSelector may cause a leak because its selector is unknown](https://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown)
5 | - [ ] [Alternatives to performSelector](http://codeshaker.blogspot.co.uk/2012/05/alternatives-to-performselector.html)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Deadlock/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Problems > Deadlock
2 |
3 | ### Articles
4 | - [ ] [Avoiding deadlocks and latency in libdispatch](https://www.cocoawithlove.com/2010/06/avoiding-deadlocks-and-latency-in.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Problems
2 |
3 | ### Articles
4 | - [ ] [Multithreading: Common Pitfalls](https://austingwalters.com/multithreading-common-pitfalls/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Race_condition/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Problems > Race condition
2 |
3 | ### Articles
4 | - [ ] [Avoiding Race Conditions](https://developer.apple.com/library/content/documentation/Security/Conceptual/SecureCodingGuide/Articles/RaceConditions.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Problems/Readers–writers_problem/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Problems > Readers–writers problem
2 |
3 | ### Articles
4 | - [ ] [Wiki: Readers–writers problem](https://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem)
5 | - [ ] [Dispatch Barriers in Swift 3](https://medium.com/@oyalhi/dispatch-barriers-in-swift-3-6c4a295215d6)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency
2 |
3 | ### Articles
4 | - [ ] [Parallel programming with Swift: Basics](https://medium.com/flawless-app-stories/basics-of-parallel-programming-with-swift-93fee8425287)
5 | - [ ] [Concurrent Programming](https://www.objc.io/issues/2-concurrency/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Runloop/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Runloop
2 |
3 | ### Articles
4 | - [ ] [Run Loops](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Multithreading_and_concurrency/Synchronization/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Multithreading and concurrency > Synchronization
2 |
3 | ### Articles
4 | - [ ] [Synchronization](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge
2 |
3 | ### Articles
4 | - [ ] [How to become a professional iOS developer](http://roadfiresoftware.com/2014/04/how-to-become-a-professional-ios-developer/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Security/Keychain/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Security > Keychain
2 |
3 | ### Articles
4 | - [ ] [Basic iOS Security: Keychain and Hashing](https://www.raywenderlich.com/185370/basic-ios-security-keychain-hashing)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > Clean architecture
2 |
3 | ### Examples
4 | - [ ] [Clean architecture with RxSwift](https://github.com/sergdort/CleanArchitectureRxSwift)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/RIBs/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > Clean architecture > RIBs
2 |
3 | ### Articles
4 | - [ ] [RIBs](https://eng.uber.com/new-rider-app/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Clean_architecture/VIPER/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > Clean architecture > VIPER
2 |
3 | ### Articles
4 | - [ ] [Architecting iOS Apps with VIPER](https://www.objc.io/issues/13-architecture/viper/)
5 |
6 | ### Books
7 | - [ ] [The Book of VIPER](https://github.com/strongself/The-Book-of-VIPER)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/Coordinators/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > Coordinators
2 |
3 | ### Articles
4 | - [ ] [Coordinators Redux](http://khanlou.com/2015/10/coordinators-redux/)
5 | - [ ] [Advanced Coordinators](http://khanlou.com/tag/advanced-coordinators/)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/MVC/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > MVC
2 |
3 | ### Slides
4 | - [ ] [Stanford MVC](https://web.stanford.edu/class/cs75n/1_MVC.pdf)
5 |
6 | ### Articles
7 | - [ ] [Do MVC like it’s 1979](https://badootech.badoo.com/do-mvc-like-its-1979-da62304f6568)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/MVVM/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural > MVVM
2 |
3 | ### Articles
4 | - [ ] [Introduction to MVVM](https://www.objc.io/issues/13-architecture/mvvm/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Architectural/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Architectural
2 |
3 | ### Articles
4 | - [ ] [iOS Architecture Patterns](https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52)
5 | - [ ] [Designing iOS architecture: Motivation](https://medium.com/@borlov/e984e4ebba4a)
6 | - [ ] [Designing iOS architecture: Checklist](https://github.com/BohdanOrlov/architecture-checklist)
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Cocoa/Abstract_Factory/Class_cluster/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Cocoa > Abstract Factory > Class cluster
2 |
3 | ### Articles
4 | - [ ] [Class Clusters](https://developer.apple.com/legacy/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW34)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Cocoa/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Cocoa
2 |
3 | ### Articles
4 | - [ ] [Cocoa Design Patterns](https://developer.apple.com/legacy/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html)
5 | - [ ] [Collection for Design Patterns in Swift](https://medium.com/swiftworld/collection-for-design-patterns-in-swift-67265359aa47)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Patterns/Creational/Singleton/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Patterns > Creational > Singleton
2 |
3 | ### Articles
4 | - [ ] [Singletons](https://thatthinginswift.com/singletons/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/Inversion_of_Control/Dependency_Injection/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Principles > Inversion of Control > Dependency Injection
2 |
3 | ### Articles
4 | - [ ] [Dependency Injection](https://www.objc.io/issues/15-testing/dependency-injection/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/Protocol-Oriented_Programming/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Principles > Protocol-Oriented Programming
2 |
3 | ### Articles
4 | - [ ] [Protocol Oriented Programming in Swift: An Introduction](https://www.appcoda.com/protocol-oriented-programming/)
5 |
6 | ### WWDC
7 | - [ ] [Protocol-Oriented Programming in Swift](https://developer.apple.com/videos/play/wwdc2015/408/)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Software_Architecture/Design_Principles/SOLID/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Software Architecture > Design Principles > SOLID
2 |
3 | ### Articles
4 | - [ ] [SOLID (object-oriented design)](https://en.wikipedia.org/wiki/SOLID_(object-oriented_design))
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Testing/BDD/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Testing > BDD
2 |
3 | ### Articles
4 | - [ ] [Behavior-Driven Testing Tutorial for iOS with Quick & Nimble](https://www.raywenderlich.com/182118/behavior-driven-testing-tutorial-ios-quick-nimble)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Testing/TDD/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Testing > TDD
2 |
3 | ### Articles
4 | - [ ] [The Three Laws of TDD](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Testing/Unit_Tests/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Testing > Unit Tests
2 |
3 | ### Articles
4 | - [ ] [iOS Unit Testing and UI Testing Tutorial](https://www.raywenderlich.com/150073/ios-unit-testing-and-ui-testing-tutorial)
5 | - [ ] [Singleton, Service Locator and tests in iOS](https://badootech.badoo.com/singleton-service-locator-and-tests-in-ios-d69484e88944)
6 | - [ ] [Unit testing asynchronous Swift code](https://www.swiftbysundell.com/posts/unit-testing-asynchronous-swift-code)
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Tools/Fastlane/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Tools > Fastlane
2 |
3 | ### Articles
4 | - [ ] [fastlane Tutorial: Getting Started](https://www.raywenderlich.com/136168/fastlane-tutorial-getting-started-2)
5 |
6 | ### Websites
7 | - [ ] [Fastlane](https://fastlane.tools)
8 |
9 |
10 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Tools/IDE/Xcode/Interface_Builder/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Tools > IDE > Xcode > Interface Builder
2 |
3 | ### Articles
4 | - [ ] [iOS User Interfaces: Storyboards vs. NIBs vs. Custom Code](https://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/Version_Control_Systems/Git/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > Version Control Systems > Git
2 |
3 | ### Websites
4 | - [ ] [git - the simple guide](http://rogerdudler.github.io/git-guide/)
5 | - [ ] [git](https://git-scm.com)
6 |
7 | ### Books
8 | - [ ] [Pro Git](https://git-scm.com/book/en/v2)
9 |
10 |
11 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/Practical_knowledge/tvOS/Focus_interactions/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer > Practical knowledge > tvOS > Focus interactions
2 |
3 | ### Articles
4 | - [ ] [Focus-Driven Interfaces with UIKit](https://developer.apple.com/videos/play/techtalks-apple-tv/3/)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/Generated/Resources/iOS_Developer/RESOURCES.md:
--------------------------------------------------------------------------------
1 | ## iOS Developer
2 |
3 | ### Articles
4 | - [ ] [How to become an iOS developer](https://badootech.badoo.com/how-to-become-an-ios-developer-91aaa4719a91)
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/main.swift:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env swift -F ../cocoapods-rome/Rome
2 | //
3 | // main.swift
4 | // Roadmap
5 | //
6 | // Created by Bohdan Orlov on 20/02/2018.
7 | // Copyright © 2018 Bohdan Orlov. All rights reserved.
8 | //
9 |
10 | import Foundation
11 | import Yaml
12 |
13 |
14 | // Domain
15 |
16 | struct Resource {
17 | let name: String
18 | let urlString: String
19 | }
20 |
21 | typealias ResourceType = String
22 | struct ResourceGroup {
23 | let type: ResourceType
24 | let resources: [Resource]
25 | }
26 |
27 | class Topic {
28 | let name: String
29 | let isEssential: Bool
30 | let resourses: [ResourceGroup]
31 | private(set) weak var superTopic: Topic?
32 | init(name: String, resourses: [ResourceGroup], superTopic: Topic?) {
33 | let essentialSuffix = "^"
34 | self.superTopic = superTopic
35 | self.resourses = resourses
36 | self.isEssential = name.hasSuffix(essentialSuffix)
37 | self.name = name.trimmingCharacters(in: CharacterSet(charactersIn: essentialSuffix))
38 | }
39 | }
40 |
41 | // YAML parsing
42 |
43 | func parce(resourses: Yaml) -> [ResourceGroup] {
44 | let resourseGroupsMap = resourses.dictionary!
45 | let resourceGroups: [ResourceGroup] = resourseGroupsMap.values.first!.array!.map {
46 | let resourceGroupMap = $0.dictionary!
47 | let type = resourceGroupMap.keys.first!.string!
48 | let resources: [Resource] = resourceGroupMap.values.first!.array!.map {
49 | let resourceMap = $0.dictionary!
50 | let name = resourceMap.keys.first!.string!
51 | let urlString = resourceMap.values.first!.string!
52 | return Resource(name: name, urlString: urlString)
53 | }
54 | return ResourceGroup(type: type, resources: resources)
55 | }
56 | return resourceGroups
57 | }
58 |
59 | func parce(children: [Yaml]) -> ([ResourceGroup], [Yaml]) {
60 | let resourcesKeyword = "RESOURCES"
61 | let resources: [ResourceGroup]
62 | if let resourcesEntry = children.first(where: { $0.dictionary!.keys.first!.string! == resourcesKeyword}) {
63 | resources = parce(resourses: resourcesEntry)
64 | } else {
65 | resources = []
66 | }
67 | let subtopicsYaml = children.filter { $0.dictionary!.keys.first!.string! != resourcesKeyword }
68 | return (resources, subtopicsYaml)
69 | }
70 |
71 | func parceTopics(from content: Yaml) -> [Topic] { // Topics parced by non-recursive DFS
72 |
73 | var resultTopics = [Topic]()
74 | var superTopicsByYamlTopic = [Yaml: Topic]()
75 | var stack: [Yaml] = content.array!
76 | while let topicYaml = stack.first {
77 | stack.removeFirst()
78 | let topicMap = topicYaml.dictionary!
79 | let topicName = topicMap.keys.first!.string!
80 | let childrenYaml = topicMap.values.first?.array ?? []
81 | let (resources, subtopicsYaml) = parce(children: childrenYaml)
82 | let topic = Topic(name: topicName, resourses: resources, superTopic: superTopicsByYamlTopic[topicYaml])
83 | resultTopics.append(topic)
84 | subtopicsYaml.forEach { superTopicsByYamlTopic[$0] = topic }
85 | stack.insert(contentsOf: subtopicsYaml, at: 0)
86 | }
87 | return resultTopics
88 | }
89 |
90 | // Markdown Rendering
91 |
92 | let generatedDir = "Generated"
93 | let resourcesDir = "Resources"
94 | let roadmapMD = "ROADMAP.md"
95 | let roadmapMDPath = generatedDir + "/" + roadmapMD
96 |
97 | extension Topic {
98 | var superTopics: [Topic] {
99 | var superTopics = [Topic]()
100 | var currentTopic = self
101 | while let superTopic = currentTopic.superTopic {
102 | superTopics.append(superTopic)
103 | currentTopic = superTopic
104 | }
105 | return superTopics
106 | }
107 |
108 | var superTopicNamesFromRoot: [String] {
109 | let reversedParents: [Topic] = superTopics.reversed()
110 | let pathComponents = (reversedParents + [self]).map { $0.name }
111 | return pathComponents
112 | }
113 |
114 | var resourceDirPathInGeneratedDir: String {
115 | return resourcesDir + "/" + superTopicNamesFromRoot.joined(separator: "/").replacingOccurrences(of: " ", with: "_")
116 | }
117 |
118 | var resourcesPathInGeneratedDir: String {
119 | return resourceDirPathInGeneratedDir + "/" + resourcesFileName
120 | }
121 |
122 | var resourcesDirPath: String {
123 | let path = generatedDir + "/" + resourceDirPathInGeneratedDir
124 | return path
125 | }
126 |
127 | var resourcesPath: String {
128 | return resourcesDirPath + "/" + resourcesFileName
129 | }
130 |
131 | var resourcesFileName: String {
132 | return "RESOURCES.md"
133 | }
134 | }
135 |
136 | func generateRoadmapMarkdown(from topics: [Topic]) {
137 | var roadmapMarkdown = "# iOS Developer Roadmap\n## Text version\nTapping on a link will take you to relevant materials.\n\n"
138 | for topic in topics {
139 | var topicName = topic.name
140 | if topic.isEssential {
141 | topicName = "`\(topicName)`"
142 | }
143 | if !topic.resourses.isEmpty {
144 | topicName = "[\(topicName)](\(topic.resourcesPathInGeneratedDir))" // Adding link to resources if any
145 | }
146 | let identation = String(repeating: " ", count: topic.superTopics.count)
147 | roadmapMarkdown.append(identation + "- [ ] " + topicName + "\n")
148 | }
149 | try! FileManager.default.createDirectory(atPath: generatedDir, withIntermediateDirectories: true, attributes: [:])
150 | try! roadmapMarkdown.write(toFile: roadmapMDPath, atomically: false, encoding: .utf8)
151 | }
152 |
153 | func generateResourcesMarkdown(from topics: [Topic]) {
154 | for topic in topics {
155 | if topic.resourses.isEmpty { continue }
156 | let pathComponents = topic.superTopicNamesFromRoot
157 | var resourcesMarkdown = "## " + pathComponents.joined(separator: " > ") + "\n\n"
158 | for resourceGroup in topic.resourses {
159 | resourcesMarkdown.append("### " + resourceGroup.type + "\n")
160 | for resource in resourceGroup.resources {
161 | resourcesMarkdown.append("- [ ] [\(resource.name)](\(resource.urlString))\n")
162 | }
163 | resourcesMarkdown.append("\n")
164 | }
165 | resourcesMarkdown.append("\n")
166 | try! FileManager.default.createDirectory(atPath: topic.resourcesDirPath, withIntermediateDirectories: true, attributes: [:])
167 | try! resourcesMarkdown.write(toFile: topic.resourcesPath, atomically: false, encoding: .utf8)
168 | }
169 | }
170 |
171 | // Image generation (PlantUML)
172 |
173 | extension Topic: Hashable {
174 | var hashValue: Int {
175 | return name.hashValue
176 | }
177 |
178 | static func ==(lhs: Topic, rhs: Topic) -> Bool {
179 | return lhs === rhs
180 | }
181 | }
182 |
183 | extension Topic {
184 | var plantUMLName: String {
185 | return name.sanitizedForPlantUML
186 | }
187 | var plantUMLAlias: String {
188 | return superTopicNamesFromRoot.joined(separator: "->").sanitizedForPlantUML
189 | }
190 | }
191 |
192 | extension String {
193 | var sanitizedForPlantUML: String {
194 | var result = self.replacingOccurrences(of: "(", with: "[")
195 | result = result.replacingOccurrences(of: ")", with: "]")
196 | return result
197 | }
198 | }
199 |
200 | @discardableResult
201 | func shell(_ args: String...) -> Int32 {
202 | let task = Process()
203 | task.launchPath = "/usr/bin/env"
204 | task.arguments = args
205 | task.launch()
206 | task.waitUntilExit()
207 | return task.terminationStatus
208 | }
209 |
210 | func generateImages(from topics: [Topic]) {
211 | generateImage(from: topics, essentialOnly: true)
212 | generateImage(from: topics, essentialOnly: false)
213 | }
214 |
215 | func usecaseWithAllias(from topic: Topic, skipAddingEssentialMark: Bool) -> String {
216 | let alias = topic.plantUMLAlias
217 | var essential = ""
218 | if !skipAddingEssentialMark && topic.isEssential {
219 | essential = " <<^>> "
220 | }
221 | return "(\(topic.plantUMLName)) as (\(alias))\(essential)\n"
222 | }
223 |
224 | func skinparam() -> String {
225 | let pallete = ["White", "#F5F0F2", "#17468A", "#E12D53", "#17468A"]
226 | return """
227 | skinparam Shadowing false
228 | skinparam Padding 0
229 | skinparam BackgroundColor \(pallete[0])
230 |
231 | skinparam Actor {
232 | BackgroundColor \(pallete[1])
233 | BorderColor \(pallete[2])
234 | FontColor \(pallete[3])
235 | FontName Helvetica
236 | FontSize 30
237 | FontStyle Bold
238 | }
239 |
240 | skinparam Arrow {
241 | Thickness 3
242 | Color \(pallete[4])
243 | }
244 |
245 | skinparam usecase {
246 | BorderThickness 3
247 | BackgroundColor \(pallete[1])
248 | BorderColor \(pallete[2])
249 | FontColor \(pallete[3])
250 | FontName Helvetica
251 | FontStyle Bold
252 | FontSize 20
253 | }
254 | """
255 | }
256 |
257 | func content(from topics: [Topic], essentialOnly: Bool) -> String {
258 | var availableArrows = ["-down->", "-up->", "-left->", "-right->"]
259 | var arrowsByParrent = [Topic: String]()
260 | var usecasesWithAliases = ""
261 | var topicRelationships = "You -|> (\(topics.first!.plantUMLAlias))\n"
262 | for topic in topics {
263 | if essentialOnly && !topic.isEssential {
264 | continue
265 | }
266 | usecasesWithAliases.append(usecaseWithAllias(from: topic, skipAddingEssentialMark: essentialOnly))
267 | guard let superTopic = topic.superTopic else {
268 | continue
269 | }
270 | let arrow = arrowsByParrent[superTopic] ?? availableArrows.removeFirst()
271 | arrowsByParrent[topic] = arrow
272 | topicRelationships.append("(\(superTopic.plantUMLAlias)) \(arrow) (\(topic.plantUMLAlias))\n")
273 | }
274 | let content = usecasesWithAliases + "\n" + topicRelationships
275 | return content
276 | }
277 |
278 | func generateImage(from topics: [Topic], essentialOnly: Bool) {
279 |
280 | let legend = essentialOnly ? "" : """
281 | legend right
282 | <<^>> - for essential topics
283 | endlegend
284 | """
285 |
286 | let plantUMLText = """
287 | @startuml
288 | left to right direction
289 | \(content(from: topics, essentialOnly: essentialOnly))
290 | \(skinparam())
291 | \(legend)
292 | @enduml
293 | """
294 |
295 | let imageName = essentialOnly ? "ESSENTIALROADMAP" : "ROADMAP"
296 |
297 | let path = generatedDir + "/" + imageName + ".txt"
298 | let excistingRoadmapText = try? String(contentsOfFile: path)
299 | guard plantUMLText != excistingRoadmapText else {
300 | return
301 | }
302 | try! plantUMLText.write(toFile: path, atomically: false, encoding: .utf8)
303 | shell("java", "-DPLANTUML_LIMIT_SIZE=8192", "-jar", "plantuml.jar", path)
304 | }
305 |
306 | // Main
307 |
308 | print("Note. This script relies on hope instead of proper error handling. It will explode if you violate implicit expectations from Content.yml. Now pray...")
309 |
310 | let content = try! String(contentsOfFile: "Content.yml")
311 | let parsedContent = try! Yaml.load(content)
312 | let topics = parceTopics(from: parsedContent)
313 | try? FileManager.default.removeItem(atPath: generatedDir + "/" + resourcesDir)
314 | generateRoadmapMarkdown(from: topics)
315 | generateResourcesMarkdown(from: topics)
316 | generateImages(from: topics)
317 |
318 | print("Done! Check 'Generated' folder for output. Don't forget to check the diff before submitting a PR.")
319 |
--------------------------------------------------------------------------------
/RoadmapProject/Script/plantuml.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/Script/plantuml.jar
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Podfile:
--------------------------------------------------------------------------------
1 | # Podfile used by cocoapods-rome
2 |
3 | platform :osx, '10.12'
4 |
5 | # remove everithing in { } after new release of cocoapods-rome
6 |
7 | plugin 'cocoapods-rome', { :pre_compile => Proc.new { |installer|
8 | installer.pods_project.targets.each do |target|
9 | target.build_configurations.each do |config|
10 | config.build_settings['SWIFT_VERSION'] = '4.2'
11 | end
12 | end
13 |
14 | installer.pods_project.save
15 | },
16 |
17 | dsym: false,
18 | configuration: 'Release'
19 | }
20 |
21 | target 'caesar' do
22 | pod 'Yaml', '3.4.3'
23 | end
24 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Yaml (3.4.3)
3 |
4 | DEPENDENCIES:
5 | - Yaml (= 3.4.3)
6 |
7 | SPEC CHECKSUMS:
8 | Yaml: 9f32854890c54304772f02380c3899c8db739800
9 |
10 | PODFILE CHECKSUM: f8e060a293b5fe5f6cced4ba1c4b7b96ac9e42e3
11 |
12 | COCOAPODS: 1.4.0
13 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Yaml (3.4.3)
3 |
4 | DEPENDENCIES:
5 | - Yaml (= 3.4.3)
6 |
7 | SPEC CHECKSUMS:
8 | Yaml: 9f32854890c54304772f02380c3899c8db739800
9 |
10 | PODFILE CHECKSUM: f8e060a293b5fe5f6cced4ba1c4b7b96ac9e42e3
11 |
12 | COCOAPODS: 1.4.0
13 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## Yaml
5 |
6 | The MIT License (MIT)
7 |
8 | Copyright (c) 2015 Behrang Noruzi Niya
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy
11 | of this software and associated documentation files (the "Software"), to deal
12 | in the Software without restriction, including without limitation the rights
13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | copies of the Software, and to permit persons to whom the Software is
15 | furnished to do so, subject to the following conditions:
16 |
17 | The above copyright notice and this permission notice shall be included in all
18 | copies or substantial portions of the Software.
19 |
20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | SOFTWARE.
27 |
28 | Generated by CocoaPods - https://cocoapods.org
29 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | The MIT License (MIT)
18 |
19 | Copyright (c) 2015 Behrang Noruzi Niya
20 |
21 | Permission is hereby granted, free of charge, to any person obtaining a copy
22 | of this software and associated documentation files (the "Software"), to deal
23 | in the Software without restriction, including without limitation the rights
24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25 | copies of the Software, and to permit persons to whom the Software is
26 | furnished to do so, subject to the following conditions:
27 |
28 | The above copyright notice and this permission notice shall be included in all
29 | copies or substantial portions of the Software.
30 |
31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
37 | SOFTWARE.
38 |
39 | License
40 | MIT
41 | Title
42 | Yaml
43 | Type
44 | PSGroupSpecifier
45 |
46 |
47 | FooterText
48 | Generated by CocoaPods - https://cocoapods.org
49 | Title
50 |
51 | Type
52 | PSGroupSpecifier
53 |
54 |
55 | StringsTable
56 | Acknowledgements
57 | Title
58 | Acknowledgements
59 |
60 |
61 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_caesar : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_caesar
5 | @end
6 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
6 |
7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
8 |
9 | # Used as a return value for each invocation of `strip_invalid_archs` function.
10 | STRIP_BINARY_RETVAL=0
11 |
12 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
13 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
14 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
15 |
16 | # Copies and strips a vendored framework
17 | install_framework()
18 | {
19 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
20 | local source="${BUILT_PRODUCTS_DIR}/$1"
21 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
22 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
23 | elif [ -r "$1" ]; then
24 | local source="$1"
25 | fi
26 |
27 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
28 |
29 | if [ -L "${source}" ]; then
30 | echo "Symlinked..."
31 | source="$(readlink "${source}")"
32 | fi
33 |
34 | # Use filter instead of exclude so missing patterns don't throw errors.
35 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
36 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
37 |
38 | local basename
39 | basename="$(basename -s .framework "$1")"
40 | binary="${destination}/${basename}.framework/${basename}"
41 | if ! [ -r "$binary" ]; then
42 | binary="${destination}/${basename}"
43 | fi
44 |
45 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
46 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
47 | strip_invalid_archs "$binary"
48 | fi
49 |
50 | # Resign the code if required by the build settings to avoid unstable apps
51 | code_sign_if_enabled "${destination}/$(basename "$1")"
52 |
53 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
54 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
55 | local swift_runtime_libs
56 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
57 | for lib in $swift_runtime_libs; do
58 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
59 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
60 | code_sign_if_enabled "${destination}/${lib}"
61 | done
62 | fi
63 | }
64 |
65 | # Copies and strips a vendored dSYM
66 | install_dsym() {
67 | local source="$1"
68 | if [ -r "$source" ]; then
69 | # Copy the dSYM into a the targets temp dir.
70 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
71 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
72 |
73 | local basename
74 | basename="$(basename -s .framework.dSYM "$source")"
75 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
76 |
77 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
78 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
79 | strip_invalid_archs "$binary"
80 | fi
81 |
82 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
83 | # Move the stripped file into its final destination.
84 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
85 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
86 | else
87 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
88 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
89 | fi
90 | fi
91 | }
92 |
93 | # Signs a framework with the provided identity
94 | code_sign_if_enabled() {
95 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
96 | # Use the current code_sign_identitiy
97 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
98 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
99 |
100 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
101 | code_sign_cmd="$code_sign_cmd &"
102 | fi
103 | echo "$code_sign_cmd"
104 | eval "$code_sign_cmd"
105 | fi
106 | }
107 |
108 | # Strip invalid architectures
109 | strip_invalid_archs() {
110 | binary="$1"
111 | # Get architectures for current target binary
112 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
113 | # Intersect them with the architectures we are building for
114 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
115 | # If there are no archs supported by this binary then warn the user
116 | if [[ -z "$intersected_archs" ]]; then
117 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
118 | STRIP_BINARY_RETVAL=0
119 | return
120 | fi
121 | stripped=""
122 | for arch in $binary_archs; do
123 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
124 | # Strip non-valid architectures in-place
125 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
126 | stripped="$stripped $arch"
127 | fi
128 | done
129 | if [[ "$stripped" ]]; then
130 | echo "Stripped $binary of architectures:$stripped"
131 | fi
132 | STRIP_BINARY_RETVAL=1
133 | }
134 |
135 |
136 | if [[ "$CONFIGURATION" == "Release" ]]; then
137 | install_framework "${BUILT_PRODUCTS_DIR}/Yaml/Yaml.framework"
138 | fi
139 | if [[ "$CONFIGURATION" == "Debug" ]]; then
140 | install_framework "${BUILT_PRODUCTS_DIR}/Yaml/Yaml.framework"
141 | fi
142 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
143 | wait
144 | fi
145 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
5 |
6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
7 | > "$RESOURCES_TO_COPY"
8 |
9 | XCASSET_FILES=()
10 |
11 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
12 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
13 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
14 |
15 | case "${TARGETED_DEVICE_FAMILY}" in
16 | 1,2)
17 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
18 | ;;
19 | 1)
20 | TARGET_DEVICE_ARGS="--target-device iphone"
21 | ;;
22 | 2)
23 | TARGET_DEVICE_ARGS="--target-device ipad"
24 | ;;
25 | 3)
26 | TARGET_DEVICE_ARGS="--target-device tv"
27 | ;;
28 | 4)
29 | TARGET_DEVICE_ARGS="--target-device watch"
30 | ;;
31 | *)
32 | TARGET_DEVICE_ARGS="--target-device mac"
33 | ;;
34 | esac
35 |
36 | install_resource()
37 | {
38 | if [[ "$1" = /* ]] ; then
39 | RESOURCE_PATH="$1"
40 | else
41 | RESOURCE_PATH="${PODS_ROOT}/$1"
42 | fi
43 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
44 | cat << EOM
45 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
46 | EOM
47 | exit 1
48 | fi
49 | case $RESOURCE_PATH in
50 | *.storyboard)
51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
53 | ;;
54 | *.xib)
55 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
56 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
57 | ;;
58 | *.framework)
59 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
60 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
61 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
62 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
63 | ;;
64 | *.xcdatamodel)
65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
67 | ;;
68 | *.xcdatamodeld)
69 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
70 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
71 | ;;
72 | *.xcmappingmodel)
73 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
74 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
75 | ;;
76 | *.xcassets)
77 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
78 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
79 | ;;
80 | *)
81 | echo "$RESOURCE_PATH" || true
82 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
83 | ;;
84 | esac
85 | }
86 |
87 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
88 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
89 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
90 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
91 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
92 | fi
93 | rm -f "$RESOURCES_TO_COPY"
94 |
95 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
96 | then
97 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
98 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
99 | while read line; do
100 | if [[ $line != "${PODS_ROOT}*" ]]; then
101 | XCASSET_FILES+=("$line")
102 | fi
103 | done <<<"$OTHER_XCASSETS"
104 |
105 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
106 | fi
107 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_caesarVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_caesarVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CODE_SIGN_IDENTITY =
2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Yaml"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks'
6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Yaml/Yaml.framework/Headers"
7 | OTHER_LDFLAGS = $(inherited) -framework "Yaml"
8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
9 | PODS_BUILD_DIR = ${BUILD_DIR}
10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
12 | PODS_ROOT = ${SRCROOT}/Pods
13 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_caesar {
2 | umbrella header "Pods-caesar-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Pods-caesar/Pods-caesar.release.xcconfig:
--------------------------------------------------------------------------------
1 | CODE_SIGN_IDENTITY =
2 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Yaml"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks'
6 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Yaml/Yaml.framework/Headers"
7 | OTHER_LDFLAGS = $(inherited) -framework "Yaml"
8 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
9 | PODS_BUILD_DIR = ${BUILD_DIR}
10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
11 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
12 | PODS_ROOT = ${SRCROOT}/Pods
13 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.4.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Yaml-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Yaml : NSObject
3 | @end
4 | @implementation PodsDummy_Yaml
5 | @end
6 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Yaml-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Yaml-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double YamlVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char YamlVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Yaml.modulemap:
--------------------------------------------------------------------------------
1 | framework module Yaml {
2 | umbrella header "Yaml-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Target Support Files/Yaml/Yaml.xcconfig:
--------------------------------------------------------------------------------
1 | APPLICATION_EXTENSION_API_ONLY = YES
2 | CODE_SIGN_IDENTITY =
3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Yaml
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Yaml
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | SWIFT_VERSION = 4.1
14 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Behrang Noruzi Niya
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Readme.md:
--------------------------------------------------------------------------------
1 | # YamlSwift
2 |
3 | Load [YAML](http://yaml.org) and [JSON](http://json.org) documents using [Swift](http://www.apple.com/swift/).
4 |
5 | `YamlSwift` parses a string of YAML document(s) (or a JSON document) and returns a `Yaml` enum value representing that string.
6 |
7 |
8 |
9 |
10 |
11 | ## Install
12 |
13 | Use [Carthage](https://github.com/Carthage/Carthage) to build and install.
14 |
15 | Or use [CocoaPods](https://cocoapods.org/) :
16 | Add `pod 'Yaml'` to your `Podfile` and run `pod install`.
17 |
18 | It supports Swift Package Manager.
19 |
20 | ```
21 | .package(
22 | url: "https://github.com/behrang/YamlSwift.git",
23 | from: "
24 |
25 | ```
26 |
27 | And:
28 |
29 | ```
30 | .target(
31 | name: "YourProject",
32 | dependencies: ["Yaml"]),
33 | ```
34 |
35 | ## API
36 |
37 |
38 |
39 |
40 |
41 | ### import
42 |
43 | To use it, you should import it using the following statement:
44 |
45 | ```swift
46 | import Yaml
47 | ```
48 |
49 |
50 |
51 |
52 |
53 | ### Yaml
54 |
55 | A Yaml value can be any of these cases:
56 |
57 | ```swift
58 | enum Yaml {
59 | case null
60 | case bool(Bool)
61 | case int(Int)
62 | case double(Double)
63 | case string(String)
64 | case array([Yaml])
65 | case dictionary([Yaml: Yaml])
66 | }
67 | ```
68 |
69 |
70 |
71 |
72 |
73 | ### Yaml.load
74 |
75 | ```swift
76 | Yaml.load (String) throws -> Yaml
77 | ```
78 |
79 | Takes a string of a YAML document and returns a `Yaml` enum.
80 |
81 | ```swift
82 | let value = try! Yaml.load("a: 1\nb: 2")
83 | print(value["a"]) // Int(1)
84 | print(value["b"]) // Int(2)
85 | print(value["c"]) // Null
86 | ```
87 |
88 | If the input document is invalid or contains more than one YAML document, an error is thrown.
89 |
90 | ```swift
91 | do {
92 | let value = try Yaml.load("a\nb: 2")
93 | }
94 | catch {
95 | print(error) // expected end, near "b: 2"
96 | }
97 |
98 | ```
99 |
100 |
101 |
102 |
103 |
104 | ### Yaml.loadMultiple
105 |
106 | ```swift
107 | Yaml.loadMultiple (String) throws -> [Yaml]
108 | ```
109 |
110 | Takes a string of one or more YAML documents and returns `[Yaml]`.
111 |
112 | ```swift
113 | let value = try! Yaml.loadMultiple("---\na: 1\nb: 2\n---\na: 3\nb: 4")
114 | print(value[0]["a"]) // Int(1)
115 | print(value[1]["a"]) // Int(3)
116 | ```
117 |
118 | It will throw an error if an error is encountered in any of the documents.
119 |
120 |
121 |
122 |
123 |
124 | ### Yaml#[Int] -> Yaml
125 |
126 | ```swift
127 | value[Int] -> Yaml
128 | value[Int] = Yaml
129 | ```
130 |
131 | If used on a `Yaml.array` value, it will return the value at the specified index. If the index is invalid or the value is not a `Yaml.array`, `Yaml.null` is returned. You can also set a value at a specific index. Enough elements will be added to the wrapped array to set the specified index. If the value is not a `Yaml.array`, it will change to it after set.
132 |
133 | ```swift
134 | var value = try! Yaml.load("- Behrang\n- Maryam")
135 | print(value[0]) // String(Behrang)
136 | print(value[1]) // String(Maryam)
137 | print(value[2]) // Null
138 | value[2] = "Radin"
139 | print(value[2]) // String(Radin)
140 | ```
141 |
142 |
143 |
144 |
145 |
146 | ### Yaml#[Yaml] -> Yaml
147 |
148 | ```swift
149 | value[Yaml] -> Yaml
150 | value[Yaml] = Yaml
151 | ```
152 |
153 | If used on a `Yaml.dictionary` value, it will return the value for the specified key. If a value for the specified key does not exist, or value is not a `Yaml.dictionary`, `Yaml.null` is returned. You can also set a value for a specific key. If the value is not a `Yaml.dictionary`, it will change to it after set.
154 |
155 | Since `Yaml` is a literal convertible type, you can pass simple values to this method.
156 |
157 | ```swift
158 | var value = try! Yaml.load("first name: Behrang\nlast name: Noruzi Niya")
159 | print(value["first name"]) // String(Behrang)
160 | print(value["last name"]) // String(Noruzi Niya)
161 | print(value["age"]) // Null
162 | value["first name"] = "Radin"
163 | value["age"] = 1
164 | print(value["first name"]) // String(Radin)
165 | print(value["last name"]) // String(Noruzi Niya)
166 | print(value["age"]) // Int(1)
167 | ```
168 |
169 |
170 |
171 |
172 |
173 | ### Yaml#bool
174 |
175 | ```swift
176 | value.bool -> Bool?
177 | ```
178 |
179 | Returns an `Optional` value. If the value is a `Yaml.bool` value, the wrapped value is returned. Otherwise `nil` is returned.
180 |
181 | ```swift
182 | let value = try! Yaml.load("animate: true\nshow tip: false\nusage: 25")
183 | print(value["animate"].bool) // Optional(true)
184 | print(value["show tip"].bool) // Optional(false)
185 | print(value["usage"].bool) // nil
186 | ```
187 |
188 |
189 |
190 |
191 |
192 | ### Yaml#int
193 |
194 | ```swift
195 | value.int -> Int?
196 | ```
197 |
198 | Returns an `Optional` value. If the value is a `Yaml.int` value, the wrapped value is returned. Otherwise `nil` is returned.
199 |
200 | ```swift
201 | let value = try! Yaml.load("a: 1\nb: 2.0\nc: 2.5")
202 | print(value["a"].int) // Optional(1)
203 | print(value["b"].int) // Optional(2)
204 | print(value["c"].int) // nil
205 | ```
206 |
207 |
208 |
209 |
210 |
211 | ### Yaml#double
212 |
213 | ```swift
214 | value.double -> Double?
215 | ```
216 |
217 | Returns an `Optional` value. If the value is a `Yaml.double` value, the wrapped value is returned. Otherwise `nil` is returned.
218 |
219 | ```swift
220 | let value = try! Yaml.load("a: 1\nb: 2.0\nc: 2.5\nd: true")
221 | print(value["a"].double) // Optional(1.0)
222 | print(value["b"].double) // Optional(2.0)
223 | print(value["c"].double) // Optional(2.5)
224 | print(value["d"].double) // nil
225 | ```
226 |
227 |
228 |
229 |
230 |
231 | ### Yaml#string
232 |
233 | ```swift
234 | value.string -> String?
235 | ```
236 |
237 | Returns an `Optional` value. If the value is a `Yaml.string` value, the wrapped value is returned. Otherwise `nil` is returned.
238 |
239 | ```swift
240 | let value = try! Yaml.load("first name: Behrang\nlast name: Noruzi Niya\nage: 33")
241 | print(value["first name"].string) // Optional("Behrang")
242 | print(value["last name"].string) // Optional("Noruzi Niya")
243 | print(value["age"].string) // nil
244 | ```
245 |
246 |
247 |
248 |
249 |
250 | ### Yaml#array
251 |
252 | ```swift
253 | value.array -> [Yaml]?
254 | ```
255 |
256 | Returns an `Optional>` value. If the value is a `Yaml.array` value, the wrapped value is returned. Otherwise `nil` is returned.
257 |
258 | ```swift
259 | let value = try! Yaml.load("languages:\n - Swift: true\n - Objective C: false")
260 | print(value.array) // nil
261 | print(value["languages"].array) // Optional([Dictionary([String(Swift): Bool(true)]), Dictionary([String(Objective C): Bool(false)])])
262 | ```
263 |
264 |
265 |
266 |
267 |
268 | ### Yaml#dictionary
269 |
270 | ```swift
271 | value.dictionary -> [Yaml: Yaml]?
272 | ```
273 |
274 | Returns an `Optional>` value. If the value is a `Yaml.dictionary` value, the wrapped value is returned. Otherwise `nil` is returned.
275 |
276 | ```swift
277 | let value = try! Yaml.load("- Swift: true\n- Objective C: false")
278 | print(value.dictionary) // nil
279 | print(value[0].dictionary) // Optional([String(Swift): Bool(true)])
280 | ```
281 |
282 |
283 |
284 |
285 |
286 | ### Yaml#count
287 |
288 | ```swift
289 | value.count -> Int?
290 | ```
291 |
292 | Returns an `Optional` value. If the value is either a `Yaml.array` or a `Yaml.dictionary` value, the count of elements is returned. Otherwise `nil` is returned.
293 |
294 | ```swift
295 | let value = try! Yaml.load("- Swift: true\n- Objective C: false")
296 | print(value.count) // Optional(2)
297 | print(value[0].count) // Optional(1)
298 | print(value[0]["Swift"].count) // nil
299 | ```
300 |
301 |
302 |
303 |
304 |
305 | ## License
306 |
307 | MIT
308 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Sources/Yaml/YAMLOperators.swift:
--------------------------------------------------------------------------------
1 | infix operator |>: Functional
2 | func |> (x: T, f: (T) -> U) -> U {
3 | return f(x)
4 | }
5 |
6 |
7 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Sources/Yaml/YAMLRegex.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 |
4 | private let invalidOptionsPattern =
5 | try! NSRegularExpression(pattern: "[^ixsm]", options: [])
6 |
7 | private let regexOptions: [Character: NSRegularExpression.Options] = [
8 | "i": .caseInsensitive,
9 | "x": .allowCommentsAndWhitespace,
10 | "s": .dotMatchesLineSeparators,
11 | "m": .anchorsMatchLines
12 | ]
13 |
14 | extension Yaml {
15 | struct Regex {
16 |
17 | static func matchRange (_ string: String, regex: NSRegularExpression) -> NSRange {
18 | let sr = NSMakeRange(0, string.utf16.count)
19 | return regex.rangeOfFirstMatch(in: string, options: [], range: sr)
20 | }
21 |
22 | static func matches (_ string: String, regex: NSRegularExpression) -> Bool {
23 | return matchRange(string, regex: regex).location != NSNotFound
24 | }
25 |
26 | static func regex (_ pattern: String, options: String = "") -> NSRegularExpression! {
27 | if matches(options, regex: invalidOptionsPattern) {
28 | return nil
29 | }
30 |
31 | let opts = options.reduce(NSRegularExpression.Options()) { (acc, opt) -> NSRegularExpression.Options in
32 | return NSRegularExpression.Options(rawValue:acc.rawValue | (regexOptions[opt] ?? NSRegularExpression.Options()).rawValue)
33 | }
34 | return try? NSRegularExpression(pattern: pattern, options: opts)
35 | }
36 |
37 |
38 |
39 |
40 |
41 | static func replace (_ regex: NSRegularExpression, template: String) -> (String)
42 | -> String {
43 | return { string in
44 | let s = NSMutableString(string: string)
45 | let range = NSMakeRange(0, string.utf16.count)
46 | _ = regex.replaceMatches(in: s, options: [], range: range,
47 | withTemplate: template)
48 | #if os(Linux)
49 | return s._bridgeToSwift()
50 | #else
51 | return s as String
52 | #endif
53 | }
54 | }
55 |
56 | static func replace (_ regex: NSRegularExpression, block: @escaping ([String]) -> String)
57 | -> (String) -> String {
58 | return { string in
59 | let s = NSMutableString(string: string)
60 | let range = NSMakeRange(0, string.utf16.count)
61 | var offset = 0
62 | regex.enumerateMatches(in: string, options: [], range: range) {
63 | result, _, _ in
64 | if let result = result {
65 | var captures = [String](repeating: "", count: result.numberOfRanges)
66 | for i in 0.. (String)
87 | -> (String, String) {
88 | return { string in
89 | let r = matchRange(string, regex: regex)
90 | if r.location == NSNotFound {
91 | return ("", string)
92 | } else {
93 | let s = NSString(string: string)
94 | let i = r.location + r.length
95 | return (s.substring(to: i), s.substring(from: i))
96 | }
97 | }
98 | }
99 |
100 | static func splitTrail (_ regex: NSRegularExpression) -> (String)
101 | -> (String, String) {
102 | return { string in
103 | let r = matchRange(string, regex: regex)
104 | if r.location == NSNotFound {
105 | return (string, "")
106 | } else {
107 | let s = NSString(string: string)
108 | let i = r.location
109 | return (s.substring(to: i), s.substring(from: i))
110 | }
111 | }
112 | }
113 |
114 | static func substring (_ range: NSRange, _ string : String ) -> String {
115 | return NSString(string: string).substring(with: range)
116 | }
117 |
118 | static func substring (_ index: Int, _ string: String ) -> String {
119 | return NSString(string: string).substring(from: index)
120 | }
121 | }
122 |
123 | }
124 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Sources/Yaml/YAMLResult.swift:
--------------------------------------------------------------------------------
1 | internal enum YAMLResult {
2 | case error(String)
3 | case value(T)
4 |
5 | public var error: String? {
6 | switch self {
7 | case .error(let e): return e
8 | case .value: return nil
9 | }
10 | }
11 |
12 | public var value: T? {
13 | switch self {
14 | case .error: return nil
15 | case .value(let v): return v
16 | }
17 | }
18 |
19 | public func map (f: (T) -> U) -> YAMLResult {
20 | switch self {
21 | case .error(let e): return .error(e)
22 | case .value(let v): return .value(f(v))
23 | }
24 | }
25 |
26 | public func flatMap (f: (T) -> YAMLResult) -> YAMLResult {
27 | switch self {
28 | case .error(let e): return .error(e)
29 | case .value(let v): return f(v)
30 | }
31 | }
32 | }
33 |
34 |
35 | precedencegroup Functional {
36 | associativity: left
37 | higherThan: DefaultPrecedence
38 | }
39 |
40 | infix operator <*>: Functional
41 | func <*> (f: YAMLResult<(T) -> U>, x: YAMLResult) -> YAMLResult {
42 | switch (x, f) {
43 | case (.error(let e), _): return .error(e)
44 | case (.value, .error(let e)): return .error(e)
45 | case (.value(let x), .value(let f)): return . value(f(x))
46 | }
47 | }
48 |
49 | infix operator <^>: Functional
50 | func <^> (f: (T) -> U, x: YAMLResult) -> YAMLResult {
51 | return x.map(f: f)
52 | }
53 |
54 | infix operator >>-: Functional
55 | func >>- (x: YAMLResult, f: (T) -> U) -> YAMLResult {
56 | return x.map(f: f)
57 | }
58 |
59 | infix operator >>=-: Functional
60 | func >>=- (x: YAMLResult, f: (T) -> YAMLResult) -> YAMLResult {
61 | return x.flatMap(f: f)
62 | }
63 |
64 | infix operator >>|: Functional
65 | func >>| (x: YAMLResult, y: YAMLResult) -> YAMLResult {
66 | return x.flatMap { _ in y }
67 | }
68 |
69 | extension Yaml {
70 | static func lift (_ v: V) -> YAMLResult {
71 | return .value(v)
72 | }
73 |
74 | static func fail (_ e: String) -> YAMLResult {
75 | return .error(e)
76 | }
77 |
78 | static func join (_ x: YAMLResult>) -> YAMLResult {
79 | return x >>=- { i in i }
80 | }
81 |
82 | static func `guard` (_ error: @autoclosure() -> String, check: Bool) -> YAMLResult<()> {
83 | return check ? lift(()) : .error(error())
84 | }
85 |
86 | }
87 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Sources/Yaml/YAMLTokenizer.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 |
4 | extension Yaml {
5 | enum TokenType: String {
6 | case yamlDirective = "%YAML"
7 | case docStart = "doc-start"
8 | case docend = "doc-end"
9 | case comment = "comment"
10 | case space = "space"
11 | case newLine = "newline"
12 | case indent = "indent"
13 | case dedent = "dedent"
14 | case null = "null"
15 | case _true = "true"
16 | case _false = "false"
17 | case infinityP = "+infinity"
18 | case infinityN = "-infinity"
19 | case nan = "nan"
20 | case double = "double"
21 | case int = "int"
22 | case intOct = "int-oct"
23 | case intHex = "int-hex"
24 | case intSex = "int-sex"
25 | case anchor = "&"
26 | case alias = "*"
27 | case comma = ","
28 | case openSB = "["
29 | case closeSB = "]"
30 | case dash = "-"
31 | case openCB = "{"
32 | case closeCB = "}"
33 | case key = "key"
34 | case keyDQ = "key-dq"
35 | case keySQ = "key-sq"
36 | case questionMark = "?"
37 | case colonFO = ":-flow-out"
38 | case colonFI = ":-flow-in"
39 | case colon = ":"
40 | case literal = "|"
41 | case folded = ">"
42 | case reserved = "reserved"
43 | case stringDQ = "string-dq"
44 | case stringSQ = "string-sq"
45 | case stringFI = "string-flow-in"
46 | case stringFO = "string-flow-out"
47 | case string = "string"
48 | case end = "end"
49 | }
50 | }
51 |
52 | private typealias TokenPattern = (type: Yaml.TokenType, pattern: NSRegularExpression)
53 |
54 | extension Yaml {
55 | typealias TokenMatch = (type: Yaml.TokenType, match: String)
56 | }
57 |
58 | private let bBreak = "(?:\\r\\n|\\r|\\n)"
59 |
60 | // printable non-space chars,
61 | // except `:`(3a), `#`(23), `,`(2c), `[`(5b), `]`(5d), `{`(7b), `}`(7d)
62 | private let safeIn = "\\x21\\x22\\x24-\\x2b\\x2d-\\x39\\x3b-\\x5a\\x5c\\x5e-\\x7a" +
63 | "\\x7c\\x7e\\x85\\xa0-\\ud7ff\\ue000-\\ufefe\\uff00\\ufffd" +
64 | "\\U00010000-\\U0010ffff"
65 | // with flow indicators: `,`, `[`, `]`, `{`, `}`
66 | private let safeOut = "\\x2c\\x5b\\x5d\\x7b\\x7d" + safeIn
67 | private let plainOutPattern =
68 | "([\(safeOut)]#|:(?![ \\t]|\(bBreak))|[\(safeOut)]|[ \\t])+"
69 | private let plainInPattern =
70 | "([\(safeIn)]#|:(?![ \\t]|\(bBreak))|[\(safeIn)]|[ \\t]|\(bBreak))+"
71 | private let dashPattern = Yaml.Regex.regex("^-([ \\t]+(?!#|\(bBreak))|(?=[ \\t\\n]))")
72 | private let finish = "(?= *(,|\\]|\\}|( #.*)?(\(bBreak)|$)))"
73 |
74 | private let tokenPatterns: [TokenPattern] = [
75 | (.yamlDirective, Yaml.Regex.regex("^%YAML(?= )")),
76 | (.docStart, Yaml.Regex.regex("^---")),
77 | (.docend, Yaml.Regex.regex("^\\.\\.\\.")),
78 | (.comment, Yaml.Regex.regex("^#.*|^\(bBreak) *(#.*)?(?=\(bBreak)|$)")),
79 | (.space, Yaml.Regex.regex("^ +")),
80 | (.newLine, Yaml.Regex.regex("^\(bBreak) *")),
81 | (.dash, dashPattern!),
82 | (.null, Yaml.Regex.regex("^(null|Null|NULL|~)\(finish)")),
83 | (._true, Yaml.Regex.regex("^(true|True|TRUE)\(finish)")),
84 | (._false, Yaml.Regex.regex("^(false|False|FALSE)\(finish)")),
85 | (.infinityP, Yaml.Regex.regex("^\\+?\\.(inf|Inf|INF)\(finish)")),
86 | (.infinityN, Yaml.Regex.regex("^-\\.(inf|Inf|INF)\(finish)")),
87 | (.nan, Yaml.Regex.regex("^\\.(nan|NaN|NAN)\(finish)")),
88 | (.int, Yaml.Regex.regex("^[-+]?[0-9]+\(finish)")),
89 | (.intOct, Yaml.Regex.regex("^0o[0-7]+\(finish)")),
90 | (.intHex, Yaml.Regex.regex("^0x[0-9a-fA-F]+\(finish)")),
91 | (.intSex, Yaml.Regex.regex("^[0-9]{2}(:[0-9]{2})+\(finish)")),
92 | (.double, Yaml.Regex.regex("^[-+]?(\\.[0-9]+|[0-9]+(\\.[0-9]*)?)([eE][-+]?[0-9]+)?\(finish)")),
93 | (.anchor, Yaml.Regex.regex("^&\\w+")),
94 | (.alias, Yaml.Regex.regex("^\\*\\w+")),
95 | (.comma, Yaml.Regex.regex("^,")),
96 | (.openSB, Yaml.Regex.regex("^\\[")),
97 | (.closeSB, Yaml.Regex.regex("^\\]")),
98 | (.openCB, Yaml.Regex.regex("^\\{")),
99 | (.closeCB, Yaml.Regex.regex("^\\}")),
100 | (.questionMark, Yaml.Regex.regex("^\\?( +|(?=\(bBreak)))")),
101 | (.colonFO, Yaml.Regex.regex("^:(?!:)")),
102 | (.colonFI, Yaml.Regex.regex("^:(?!:)")),
103 | (.literal, Yaml.Regex.regex("^\\|.*")),
104 | (.folded, Yaml.Regex.regex("^>.*")),
105 | (.reserved, Yaml.Regex.regex("^[@`]")),
106 | (.stringDQ, Yaml.Regex.regex("^\"([^\\\\\"]|\\\\(.|\(bBreak)))*\"")),
107 | (.stringSQ, Yaml.Regex.regex("^'([^']|'')*'")),
108 | (.stringFO, Yaml.Regex.regex("^\(plainOutPattern)(?=:([ \\t]|\(bBreak))|\(bBreak)|$)")),
109 | (.stringFI, Yaml.Regex.regex("^\(plainInPattern)")),
110 | ]
111 |
112 | extension Yaml {
113 | static func escapeErrorContext (_ text: String) -> String {
114 | let endIndex = text.index(text.startIndex, offsetBy: 50, limitedBy: text.endIndex) ?? text.endIndex
115 | let escaped = String(text[.. Yaml.Regex.replace(Yaml.Regex.regex("\\r"), template: "\\\\r")
117 | |> Yaml.Regex.replace(Yaml.Regex.regex("\\n"), template: "\\\\n")
118 | |> Yaml.Regex.replace(Yaml.Regex.regex("\""), template: "\\\\\"")
119 | return "near \"\(escaped)\""
120 | }
121 |
122 |
123 | static func tokenize (_ text: String) -> YAMLResult<[TokenMatch]> {
124 | var text = text
125 | var matchList: [TokenMatch] = []
126 | var indents = [0]
127 | var insideFlow = 0
128 | next:
129 | while text.endIndex > text.startIndex {
130 | for tokenPattern in tokenPatterns {
131 | let range = Yaml.Regex.matchRange(text, regex: tokenPattern.pattern)
132 | if range.location != NSNotFound {
133 | let rangeEnd = range.location + range.length
134 | switch tokenPattern.type {
135 |
136 | case .newLine:
137 | let match = (range, text) |> Yaml.Regex.substring
138 | let lastindent = indents.last ?? 0
139 | let rest = match[match.index(after: match.startIndex)...]
140 | let spaces = rest.count
141 | let nestedBlockSequence =
142 | Yaml.Regex.matches((rangeEnd, text) |> Yaml.Regex.substring, regex: dashPattern!)
143 | if spaces == lastindent {
144 | matchList.append(TokenMatch(.newLine, match))
145 | } else if spaces > lastindent {
146 | if insideFlow == 0 {
147 | if matchList.last != nil &&
148 | matchList[matchList.endIndex - 1].type == .indent {
149 | indents[indents.endIndex - 1] = spaces
150 | matchList[matchList.endIndex - 1] = TokenMatch(.indent, match)
151 | } else {
152 | indents.append(spaces)
153 | matchList.append(TokenMatch(.indent, match))
154 | }
155 | }
156 | } else if nestedBlockSequence && spaces == lastindent - 1 {
157 | matchList.append(TokenMatch(.newLine, match))
158 | } else {
159 | while nestedBlockSequence && spaces < (indents.last ?? 0) - 1
160 | || !nestedBlockSequence && spaces < indents.last ?? 0 {
161 | indents.removeLast()
162 | matchList.append(TokenMatch(.dedent, ""))
163 | }
164 | matchList.append(TokenMatch(.newLine, match))
165 | }
166 |
167 | case .dash, .questionMark:
168 | let match = (range, text) |> Yaml.Regex.substring
169 | let index = match.index(after: match.startIndex)
170 | let indent = match.count
171 | indents.append((indents.last ?? 0) + indent)
172 | matchList.append(
173 | TokenMatch(tokenPattern.type, String(match[.. 0 {
178 | continue
179 | }
180 | fallthrough
181 |
182 | case .colonFI:
183 | let match = (range, text) |> Yaml.Regex.substring
184 | matchList.append(TokenMatch(.colon, match))
185 | if insideFlow == 0 {
186 | indents.append((indents.last ?? 0) + 1)
187 | matchList.append(TokenMatch(.indent, ""))
188 | }
189 |
190 | case .openSB, .openCB:
191 | insideFlow += 1
192 | matchList.append(TokenMatch(tokenPattern.type, (range, text) |> Yaml.Regex.substring))
193 |
194 | case .closeSB, .closeCB:
195 | insideFlow -= 1
196 | matchList.append(TokenMatch(tokenPattern.type, (range, text) |> Yaml.Regex.substring))
197 |
198 | case .literal, .folded:
199 | matchList.append(TokenMatch(tokenPattern.type, (range, text) |> Yaml.Regex.substring))
200 | text = (rangeEnd, text) |> Yaml.Regex.substring
201 | let lastindent = indents.last ?? 0
202 | let minindent = 1 + lastindent
203 | let blockPattern = Yaml.Regex.regex(("^(\(bBreak) *)*(\(bBreak)" +
204 | "( {\(minindent),})[^ ].*(\(bBreak)( *|\\3.*))*)(?=\(bBreak)|$)"))
205 | let (lead, rest) = text |> Yaml.Regex.splitLead(blockPattern!)
206 | text = rest
207 | let block = (lead
208 | |> Yaml.Regex.replace(Yaml.Regex.regex("^\(bBreak)"), template: "")
209 | |> Yaml.Regex.replace(Yaml.Regex.regex("^ {0,\(lastindent)}"), template: "")
210 | |> Yaml.Regex.replace(Yaml.Regex.regex("\(bBreak) {0,\(lastindent)}"), template: "\n")
211 | ) + (Yaml.Regex.matches(text, regex: Yaml.Regex.regex("^\(bBreak)")) && lead.endIndex > lead.startIndex
212 | ? "\n" : "")
213 | matchList.append(TokenMatch(.string, block))
214 | continue next
215 |
216 | case .stringFO:
217 | if insideFlow > 0 {
218 | continue
219 | }
220 | let indent = (indents.last ?? 0)
221 | let blockPattern = Yaml.Regex.regex(("^\(bBreak)( *| {\(indent),}" +
222 | "\(plainOutPattern))(?=\(bBreak)|$)"))
223 | var block = (range, text)
224 | |> Yaml.Regex.substring
225 | |> Yaml.Regex.replace(Yaml.Regex.regex("^[ \\t]+|[ \\t]+$"), template: "")
226 | text = (rangeEnd, text) |> Yaml.Regex.substring
227 | while true {
228 | let range = Yaml.Regex.matchRange(text, regex: blockPattern!)
229 | if range.location == NSNotFound {
230 | break
231 | }
232 | let s = (range, text) |> Yaml.Regex.substring
233 | block += "\n" +
234 | Yaml.Regex.replace(Yaml.Regex.regex("^\(bBreak)[ \\t]*|[ \\t]+$"), template: "")(s)
235 | text = (range.location + range.length, text) |> Yaml.Regex.substring
236 | }
237 | matchList.append(TokenMatch(.string, block))
238 | continue next
239 |
240 | case .stringFI:
241 | let match = (range, text)
242 | |> Yaml.Regex.substring
243 | |> Yaml.Regex.replace(Yaml.Regex.regex("^[ \\t]|[ \\t]$"), template: "")
244 | matchList.append(TokenMatch(.string, match))
245 |
246 | case .reserved:
247 | return fail(escapeErrorContext(text))
248 |
249 | default:
250 | matchList.append(TokenMatch(tokenPattern.type, (range, text) |> Yaml.Regex.substring))
251 | }
252 | text = (rangeEnd, text) |> Yaml.Regex.substring
253 | continue next
254 | }
255 | }
256 | return fail(escapeErrorContext(text))
257 | }
258 | while indents.count > 1 {
259 | indents.removeLast()
260 | matchList.append((.dedent, ""))
261 | }
262 | matchList.append((.end, ""))
263 | return lift(matchList)
264 | }
265 | }
266 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Pods/Yaml/Sources/Yaml/Yaml.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | public enum Yaml {
4 | case null
5 | case bool(Bool)
6 | case int(Int)
7 | case double(Double)
8 | case string(String)
9 | case array([Yaml])
10 | case dictionary([Yaml: Yaml])
11 |
12 | static public func == (lhs: Yaml, rhs: Yaml) -> Bool {
13 | switch (lhs, rhs) {
14 | case (.null, .null):
15 | return true
16 | case (.bool(let lv), .bool(let rv)):
17 | return lv == rv
18 | case (.int(let lv), .int(let rv)):
19 | return lv == rv
20 | case (.int(let lv), .double(let rv)):
21 | return Double(lv) == rv
22 | case (.double(let lv), .double(let rv)):
23 | return lv == rv
24 | case (.double(let lv), .int(let rv)):
25 | return lv == Double(rv)
26 | case (.string(let lv), .string(let rv)):
27 | return lv == rv
28 | case (.array(let lv), .array(let rv)):
29 | return lv == rv
30 | case (.dictionary(let lv), .dictionary(let rv)):
31 | return lv == rv
32 | default:
33 | return false
34 | }
35 | }
36 |
37 | // unary `-` operator
38 | static public prefix func - (value: Yaml) -> Yaml {
39 | switch value {
40 | case .int(let v):
41 | return .int(-v)
42 | case .double(let v):
43 | return .double(-v)
44 | default:
45 | fatalError("`-` operator may only be used on .int or .double Yaml values")
46 | }
47 | }
48 | }
49 |
50 | extension Yaml {
51 | public enum ResultError: Error {
52 | case message(String?)
53 | }
54 | }
55 |
56 | extension Yaml: ExpressibleByNilLiteral {
57 | public init(nilLiteral: ()) {
58 | self = .null
59 | }
60 | }
61 |
62 | extension Yaml: ExpressibleByBooleanLiteral {
63 | public init(booleanLiteral: BooleanLiteralType) {
64 | self = .bool(booleanLiteral)
65 | }
66 | }
67 |
68 | extension Yaml: ExpressibleByIntegerLiteral {
69 | public init(integerLiteral: IntegerLiteralType) {
70 | self = .int(integerLiteral)
71 | }
72 | }
73 |
74 | extension Yaml: ExpressibleByFloatLiteral {
75 | public init(floatLiteral: FloatLiteralType) {
76 | self = .double(floatLiteral)
77 | }
78 | }
79 |
80 | extension Yaml: ExpressibleByStringLiteral {
81 | public init(stringLiteral: StringLiteralType) {
82 | self = .string(stringLiteral)
83 | }
84 |
85 | public init(extendedGraphemeClusterLiteral: StringLiteralType) {
86 | self = .string(extendedGraphemeClusterLiteral)
87 | }
88 |
89 | public init(unicodeScalarLiteral: StringLiteralType) {
90 | self = .string(unicodeScalarLiteral)
91 | }
92 | }
93 |
94 | extension Yaml: ExpressibleByArrayLiteral {
95 | public init(arrayLiteral elements: Yaml...) {
96 | self = .array(elements)
97 | }
98 | }
99 |
100 | extension Yaml: ExpressibleByDictionaryLiteral {
101 | public init(dictionaryLiteral elements: (Yaml, Yaml)...) {
102 | var dictionary = [Yaml: Yaml]()
103 | for (k, v) in elements {
104 | dictionary[k] = v
105 | }
106 | self = .dictionary(dictionary)
107 | }
108 | }
109 |
110 | extension Yaml: CustomStringConvertible {
111 | public var description: String {
112 | switch self {
113 | case .null:
114 | return "Null"
115 | case .bool(let b):
116 | return "Bool(\(b))"
117 | case .int(let i):
118 | return "Int(\(i))"
119 | case .double(let f):
120 | return "Double(\(f))"
121 | case .string(let s):
122 | return "String(\(s))"
123 | case .array(let s):
124 | return "Array(\(s))"
125 | case .dictionary(let m):
126 | return "Dictionary(\(m))"
127 | }
128 | }
129 | }
130 |
131 | extension Yaml: Hashable {
132 | public var hashValue: Int {
133 | return description.hashValue
134 | }
135 | }
136 |
137 |
138 |
139 | extension Yaml {
140 |
141 | public static func load (_ text: String) throws -> Yaml {
142 | let result = tokenize(text) >>=- Context.parseDoc
143 | if let value = result.value { return value } else { throw ResultError.message(result.error) }
144 | }
145 |
146 | public static func loadMultiple (_ text: String) throws -> [Yaml] {
147 | let result = tokenize(text) >>=- Context.parseDocs
148 | if let value = result.value { return value } else { throw ResultError.message(result.error) }
149 |
150 | }
151 |
152 | public static func debug (_ text: String) -> Yaml? {
153 | let result = tokenize(text)
154 | >>- { tokens in print("\n====== Tokens:\n\(tokens)"); return tokens }
155 | >>=- Context.parseDoc
156 | >>- { value -> Yaml in print("------ Doc:\n\(value)"); return value }
157 | if let error = result.error {
158 | print("~~~~~~\n\(error)")
159 | }
160 | return result.value
161 | }
162 |
163 | public static func debugMultiple (_ text: String) -> [Yaml]? {
164 | let result = tokenize(text)
165 | >>- { tokens in print("\n====== Tokens:\n\(tokens)"); return tokens }
166 | >>=- Context.parseDocs
167 | >>- { values -> [Yaml] in values.forEach {
168 | v in print("------ Doc:\n\(v)")
169 | }; return values }
170 | if let error = result.error {
171 | print("~~~~~~\n\(error)")
172 | }
173 | return result.value
174 | }
175 | }
176 |
177 | extension Yaml {
178 | public subscript(index: Int) -> Yaml {
179 | get {
180 | assert(index >= 0)
181 | switch self {
182 | case .array(let array):
183 | if array.indices.contains(index) {
184 | return array[index]
185 | } else {
186 | return .null
187 | }
188 | default:
189 | return .null
190 | }
191 | }
192 | set {
193 | assert(index >= 0)
194 | switch self {
195 | case .array(let array):
196 | let emptyCount = max(0, index + 1 - array.count)
197 | let empty = [Yaml](repeating: .null, count: emptyCount)
198 | var new = array
199 | new.append(contentsOf: empty)
200 | new[index] = newValue
201 | self = .array(new)
202 | default:
203 | var array = [Yaml](repeating: .null, count: index + 1)
204 | array[index] = newValue
205 | self = .array(array)
206 | }
207 | }
208 | }
209 |
210 | public subscript(key: Yaml) -> Yaml {
211 | get {
212 | switch self {
213 | case .dictionary(let dictionary):
214 | return dictionary[key] ?? .null
215 | default:
216 | return .null
217 | }
218 | }
219 | set {
220 | switch self {
221 | case .dictionary(let dictionary):
222 | var new = dictionary
223 | new[key] = newValue
224 | self = .dictionary(new)
225 | default:
226 | var dictionary = [Yaml: Yaml]()
227 | dictionary[key] = newValue
228 | self = .dictionary(dictionary)
229 | }
230 | }
231 | }
232 | }
233 |
234 | extension Yaml {
235 | public var bool: Bool? {
236 | switch self {
237 | case .bool(let b):
238 | return b
239 | default:
240 | return nil
241 | }
242 | }
243 |
244 | public var int: Int? {
245 | switch self {
246 | case .int(let i):
247 | return i
248 | case .double(let f):
249 | if Double(Int(f)) == f {
250 | return Int(f)
251 | } else {
252 | return nil
253 | }
254 | default:
255 | return nil
256 | }
257 | }
258 |
259 | public var double: Double? {
260 | switch self {
261 | case .double(let f):
262 | return f
263 | case .int(let i):
264 | return Double(i)
265 | default:
266 | return nil
267 | }
268 | }
269 |
270 | public var string: String? {
271 | switch self {
272 | case .string(let s):
273 | return s
274 | default:
275 | return nil
276 | }
277 | }
278 |
279 | public var array: [Yaml]? {
280 | switch self {
281 | case .array(let array):
282 | return array
283 | default:
284 | return nil
285 | }
286 | }
287 |
288 | public var dictionary: [Yaml: Yaml]? {
289 | switch self {
290 | case .dictionary(let dictionary):
291 | return dictionary
292 | default:
293 | return nil
294 | }
295 | }
296 |
297 | public var count: Int? {
298 | switch self {
299 | case .array(let array):
300 | return array.count
301 | case .dictionary(let dictionary):
302 | return dictionary.count
303 | default:
304 | return nil
305 | }
306 | }
307 | }
308 |
309 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Headers/Yaml-Swift.h:
--------------------------------------------------------------------------------
1 | // Generated by Apple Swift version 4.2 (swiftlang-1000.11.37.1 clang-1000.11.45.1)
2 | #pragma clang diagnostic push
3 | #pragma clang diagnostic ignored "-Wgcc-compat"
4 |
5 | #if !defined(__has_include)
6 | # define __has_include(x) 0
7 | #endif
8 | #if !defined(__has_attribute)
9 | # define __has_attribute(x) 0
10 | #endif
11 | #if !defined(__has_feature)
12 | # define __has_feature(x) 0
13 | #endif
14 | #if !defined(__has_warning)
15 | # define __has_warning(x) 0
16 | #endif
17 |
18 | #if __has_include()
19 | # include
20 | #endif
21 |
22 | #pragma clang diagnostic ignored "-Wauto-import"
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | #if !defined(SWIFT_TYPEDEFS)
29 | # define SWIFT_TYPEDEFS 1
30 | # if __has_include()
31 | # include
32 | # elif !defined(__cplusplus)
33 | typedef uint_least16_t char16_t;
34 | typedef uint_least32_t char32_t;
35 | # endif
36 | typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
37 | typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
38 | typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
39 | typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
40 | typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
41 | typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
42 | typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
43 | typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
44 | typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
45 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
46 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
47 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
48 | #endif
49 |
50 | #if !defined(SWIFT_PASTE)
51 | # define SWIFT_PASTE_HELPER(x, y) x##y
52 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
53 | #endif
54 | #if !defined(SWIFT_METATYPE)
55 | # define SWIFT_METATYPE(X) Class
56 | #endif
57 | #if !defined(SWIFT_CLASS_PROPERTY)
58 | # if __has_feature(objc_class_property)
59 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
60 | # else
61 | # define SWIFT_CLASS_PROPERTY(...)
62 | # endif
63 | #endif
64 |
65 | #if __has_attribute(objc_runtime_name)
66 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
67 | #else
68 | # define SWIFT_RUNTIME_NAME(X)
69 | #endif
70 | #if __has_attribute(swift_name)
71 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
72 | #else
73 | # define SWIFT_COMPILE_NAME(X)
74 | #endif
75 | #if __has_attribute(objc_method_family)
76 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
77 | #else
78 | # define SWIFT_METHOD_FAMILY(X)
79 | #endif
80 | #if __has_attribute(noescape)
81 | # define SWIFT_NOESCAPE __attribute__((noescape))
82 | #else
83 | # define SWIFT_NOESCAPE
84 | #endif
85 | #if __has_attribute(warn_unused_result)
86 | # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
87 | #else
88 | # define SWIFT_WARN_UNUSED_RESULT
89 | #endif
90 | #if __has_attribute(noreturn)
91 | # define SWIFT_NORETURN __attribute__((noreturn))
92 | #else
93 | # define SWIFT_NORETURN
94 | #endif
95 | #if !defined(SWIFT_CLASS_EXTRA)
96 | # define SWIFT_CLASS_EXTRA
97 | #endif
98 | #if !defined(SWIFT_PROTOCOL_EXTRA)
99 | # define SWIFT_PROTOCOL_EXTRA
100 | #endif
101 | #if !defined(SWIFT_ENUM_EXTRA)
102 | # define SWIFT_ENUM_EXTRA
103 | #endif
104 | #if !defined(SWIFT_CLASS)
105 | # if __has_attribute(objc_subclassing_restricted)
106 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
107 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
108 | # else
109 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
110 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
111 | # endif
112 | #endif
113 |
114 | #if !defined(SWIFT_PROTOCOL)
115 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
116 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
117 | #endif
118 |
119 | #if !defined(SWIFT_EXTENSION)
120 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
121 | #endif
122 |
123 | #if !defined(OBJC_DESIGNATED_INITIALIZER)
124 | # if __has_attribute(objc_designated_initializer)
125 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
126 | # else
127 | # define OBJC_DESIGNATED_INITIALIZER
128 | # endif
129 | #endif
130 | #if !defined(SWIFT_ENUM_ATTR)
131 | # if defined(__has_attribute) && __has_attribute(enum_extensibility)
132 | # define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
133 | # else
134 | # define SWIFT_ENUM_ATTR(_extensibility)
135 | # endif
136 | #endif
137 | #if !defined(SWIFT_ENUM)
138 | # define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
139 | # if __has_feature(generalized_swift_name)
140 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
141 | # else
142 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
143 | # endif
144 | #endif
145 | #if !defined(SWIFT_UNAVAILABLE)
146 | # define SWIFT_UNAVAILABLE __attribute__((unavailable))
147 | #endif
148 | #if !defined(SWIFT_UNAVAILABLE_MSG)
149 | # define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
150 | #endif
151 | #if !defined(SWIFT_AVAILABILITY)
152 | # define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
153 | #endif
154 | #if !defined(SWIFT_DEPRECATED)
155 | # define SWIFT_DEPRECATED __attribute__((deprecated))
156 | #endif
157 | #if !defined(SWIFT_DEPRECATED_MSG)
158 | # define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
159 | #endif
160 | #if __has_feature(attribute_diagnose_if_objc)
161 | # define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
162 | #else
163 | # define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
164 | #endif
165 | #if __has_feature(modules)
166 | #endif
167 |
168 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
169 | #pragma clang diagnostic ignored "-Wduplicate-method-arg"
170 | #if __has_warning("-Wpragma-clang-attribute")
171 | # pragma clang diagnostic ignored "-Wpragma-clang-attribute"
172 | #endif
173 | #pragma clang diagnostic ignored "-Wunknown-pragmas"
174 | #pragma clang diagnostic ignored "-Wnullability"
175 |
176 | #if __has_attribute(external_source_symbol)
177 | # pragma push_macro("any")
178 | # undef any
179 | # pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="Yaml",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
180 | # pragma pop_macro("any")
181 | #endif
182 |
183 | #if __has_attribute(external_source_symbol)
184 | # pragma clang attribute pop
185 | #endif
186 | #pragma clang diagnostic pop
187 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Headers/Yaml-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double YamlVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char YamlVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Modules/Yaml.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Modules/Yaml.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Modules/Yaml.swiftmodule/x86_64.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Modules/Yaml.swiftmodule/x86_64.swiftmodule
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Yaml {
2 | umbrella header "Yaml-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
8 | module Yaml.Swift {
9 | header "Yaml-Swift.h"
10 | requires objc
11 | }
12 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 18A391
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | Yaml
11 | CFBundleIdentifier
12 | org.cocoapods.Yaml
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | Yaml
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 3.4.3
21 | CFBundleSignature
22 | ????
23 | CFBundleSupportedPlatforms
24 |
25 | MacOSX
26 |
27 | CFBundleVersion
28 | 1
29 | DTCompiler
30 | com.apple.compilers.llvm.clang.1_0
31 | DTPlatformBuild
32 | 10A255
33 | DTPlatformVersion
34 | GM
35 | DTSDKBuild
36 | 18A384
37 | DTSDKName
38 | macosx10.14
39 | DTXcode
40 | 1000
41 | DTXcodeBuild
42 | 10A255
43 |
44 |
45 |
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Yaml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/A/Yaml
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/RoadmapProject/cocoapods-rome/Rome/Yaml.framework/Yaml:
--------------------------------------------------------------------------------
1 | Versions/Current/Yaml
--------------------------------------------------------------------------------
/generateAll.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | ( cd RoadmapProject/Script && ./main.swift )
--------------------------------------------------------------------------------
/headerImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/suleturp/iOS-Developer-Roadmap/050fbdbd0539ad667c083f0c2a1c46193ebfc4a2/headerImage.png
--------------------------------------------------------------------------------