├── .gitignore ├── .travis.yml ├── Example ├── LayoutLoopHunter.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── LayoutLoopHunter-Example.xcscheme ├── LayoutLoopHunter.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── LayoutLoopHunter.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ └── project.pbxproj │ └── Target Support Files │ │ ├── LayoutLoopHunter │ │ ├── Info.plist │ │ ├── LayoutLoopHunter-dummy.m │ │ ├── LayoutLoopHunter-prefix.pch │ │ ├── LayoutLoopHunter-umbrella.h │ │ ├── LayoutLoopHunter.modulemap │ │ └── LayoutLoopHunter.xcconfig │ │ └── Pods-LayoutLoopHunter_Tests │ │ ├── Info.plist │ │ ├── Pods-LayoutLoopHunter_Tests-acknowledgements.markdown │ │ ├── Pods-LayoutLoopHunter_Tests-acknowledgements.plist │ │ ├── Pods-LayoutLoopHunter_Tests-dummy.m │ │ ├── Pods-LayoutLoopHunter_Tests-frameworks.sh │ │ ├── Pods-LayoutLoopHunter_Tests-resources.sh │ │ ├── Pods-LayoutLoopHunter_Tests-umbrella.h │ │ ├── Pods-LayoutLoopHunter_Tests.debug.xcconfig │ │ ├── Pods-LayoutLoopHunter_Tests.modulemap │ │ └── Pods-LayoutLoopHunter_Tests.release.xcconfig └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── LayoutLoopHunter.podspec ├── LayoutLoopHunter ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ └── LayoutLoopHunter.swift ├── README.md └── _Pods.xcodeproj /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/LayoutLoopHunter.xcworkspace -scheme LayoutLoopHunter-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/LayoutLoopHunter.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 11 | EB9B8377991D4DA041DB099B /* Pods_LayoutLoopHunter_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9FCB63C6FCFEFF2FF5C4FC8 /* Pods_LayoutLoopHunter_Tests.framework */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXFileReference section */ 15 | 0EE3D5DD8672C2F84B06FEE7 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LayoutLoopHunter_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.release.xcconfig"; sourceTree = ""; }; 16 | 1BC0498892FD34D8812B4314 /* LayoutLoopHunter.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LayoutLoopHunter.podspec; path = ../LayoutLoopHunter.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 17 | 368FBA22A535548142B394E6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 18 | 5D57E11A4B7E89D8245B4C86 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 19 | 607FACE51AFB9204008FA782 /* LayoutLoopHunter_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LayoutLoopHunter_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 20 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 21 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 22 | C6F0284BAF56442EF0E69E9B /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LayoutLoopHunter_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.debug.xcconfig"; sourceTree = ""; }; 23 | F9FCB63C6FCFEFF2FF5C4FC8 /* Pods_LayoutLoopHunter_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LayoutLoopHunter_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 24 | /* End PBXFileReference section */ 25 | 26 | /* Begin PBXFrameworksBuildPhase section */ 27 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 28 | isa = PBXFrameworksBuildPhase; 29 | buildActionMask = 2147483647; 30 | files = ( 31 | EB9B8377991D4DA041DB099B /* Pods_LayoutLoopHunter_Tests.framework in Frameworks */, 32 | ); 33 | runOnlyForDeploymentPostprocessing = 0; 34 | }; 35 | /* End PBXFrameworksBuildPhase section */ 36 | 37 | /* Begin PBXGroup section */ 38 | 607FACC71AFB9204008FA782 = { 39 | isa = PBXGroup; 40 | children = ( 41 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 42 | 607FACE81AFB9204008FA782 /* Tests */, 43 | 607FACD11AFB9204008FA782 /* Products */, 44 | B2C612FE35FA9562D283D789 /* Pods */, 45 | C2FA7BD3B38BCEE375164F01 /* Frameworks */, 46 | ); 47 | sourceTree = ""; 48 | }; 49 | 607FACD11AFB9204008FA782 /* Products */ = { 50 | isa = PBXGroup; 51 | children = ( 52 | 607FACE51AFB9204008FA782 /* LayoutLoopHunter_Tests.xctest */, 53 | ); 54 | name = Products; 55 | sourceTree = ""; 56 | }; 57 | 607FACE81AFB9204008FA782 /* Tests */ = { 58 | isa = PBXGroup; 59 | children = ( 60 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 61 | 607FACE91AFB9204008FA782 /* Supporting Files */, 62 | ); 63 | path = Tests; 64 | sourceTree = ""; 65 | }; 66 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | 607FACEA1AFB9204008FA782 /* Info.plist */, 70 | ); 71 | name = "Supporting Files"; 72 | sourceTree = ""; 73 | }; 74 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 1BC0498892FD34D8812B4314 /* LayoutLoopHunter.podspec */, 78 | 5D57E11A4B7E89D8245B4C86 /* README.md */, 79 | 368FBA22A535548142B394E6 /* LICENSE */, 80 | ); 81 | name = "Podspec Metadata"; 82 | sourceTree = ""; 83 | }; 84 | B2C612FE35FA9562D283D789 /* Pods */ = { 85 | isa = PBXGroup; 86 | children = ( 87 | C6F0284BAF56442EF0E69E9B /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */, 88 | 0EE3D5DD8672C2F84B06FEE7 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */, 89 | ); 90 | name = Pods; 91 | sourceTree = ""; 92 | }; 93 | C2FA7BD3B38BCEE375164F01 /* Frameworks */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | F9FCB63C6FCFEFF2FF5C4FC8 /* Pods_LayoutLoopHunter_Tests.framework */, 97 | ); 98 | name = Frameworks; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 607FACE41AFB9204008FA782 /* LayoutLoopHunter_Tests */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "LayoutLoopHunter_Tests" */; 107 | buildPhases = ( 108 | 1DA8D3DD24F370BD3243A950 /* [CP] Check Pods Manifest.lock */, 109 | 607FACE11AFB9204008FA782 /* Sources */, 110 | 607FACE21AFB9204008FA782 /* Frameworks */, 111 | 607FACE31AFB9204008FA782 /* Resources */, 112 | 124BABAE4817D10DC180C6AE /* [CP] Embed Pods Frameworks */, 113 | ); 114 | buildRules = ( 115 | ); 116 | dependencies = ( 117 | ); 118 | name = LayoutLoopHunter_Tests; 119 | productName = Tests; 120 | productReference = 607FACE51AFB9204008FA782 /* LayoutLoopHunter_Tests.xctest */; 121 | productType = "com.apple.product-type.bundle.unit-test"; 122 | }; 123 | /* End PBXNativeTarget section */ 124 | 125 | /* Begin PBXProject section */ 126 | 607FACC81AFB9204008FA782 /* Project object */ = { 127 | isa = PBXProject; 128 | attributes = { 129 | LastSwiftUpdateCheck = 0830; 130 | LastUpgradeCheck = 1010; 131 | ORGANIZATIONNAME = CocoaPods; 132 | TargetAttributes = { 133 | 607FACE41AFB9204008FA782 = { 134 | CreatedOnToolsVersion = 6.3.1; 135 | LastSwiftMigration = 0900; 136 | TestTargetID = 607FACCF1AFB9204008FA782; 137 | }; 138 | }; 139 | }; 140 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "LayoutLoopHunter" */; 141 | compatibilityVersion = "Xcode 3.2"; 142 | developmentRegion = English; 143 | hasScannedForEncodings = 0; 144 | knownRegions = ( 145 | en, 146 | Base, 147 | ); 148 | mainGroup = 607FACC71AFB9204008FA782; 149 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 150 | projectDirPath = ""; 151 | projectRoot = ""; 152 | targets = ( 153 | 607FACE41AFB9204008FA782 /* LayoutLoopHunter_Tests */, 154 | ); 155 | }; 156 | /* End PBXProject section */ 157 | 158 | /* Begin PBXResourcesBuildPhase section */ 159 | 607FACE31AFB9204008FA782 /* Resources */ = { 160 | isa = PBXResourcesBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | ); 164 | runOnlyForDeploymentPostprocessing = 0; 165 | }; 166 | /* End PBXResourcesBuildPhase section */ 167 | 168 | /* Begin PBXShellScriptBuildPhase section */ 169 | 124BABAE4817D10DC180C6AE /* [CP] Embed Pods Frameworks */ = { 170 | isa = PBXShellScriptBuildPhase; 171 | buildActionMask = 2147483647; 172 | files = ( 173 | ); 174 | inputPaths = ( 175 | "${SRCROOT}/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-frameworks.sh", 176 | "${BUILT_PRODUCTS_DIR}/LayoutLoopHunter/LayoutLoopHunter.framework", 177 | ); 178 | name = "[CP] Embed Pods Frameworks"; 179 | outputPaths = ( 180 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LayoutLoopHunter.framework", 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-frameworks.sh\"\n"; 185 | showEnvVarsInLog = 0; 186 | }; 187 | 1DA8D3DD24F370BD3243A950 /* [CP] Check Pods Manifest.lock */ = { 188 | isa = PBXShellScriptBuildPhase; 189 | buildActionMask = 2147483647; 190 | files = ( 191 | ); 192 | inputPaths = ( 193 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 194 | "${PODS_ROOT}/Manifest.lock", 195 | ); 196 | name = "[CP] Check Pods Manifest.lock"; 197 | outputPaths = ( 198 | "$(DERIVED_FILE_DIR)/Pods-LayoutLoopHunter_Tests-checkManifestLockResult.txt", 199 | ); 200 | runOnlyForDeploymentPostprocessing = 0; 201 | shellPath = /bin/sh; 202 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 203 | showEnvVarsInLog = 0; 204 | }; 205 | /* End PBXShellScriptBuildPhase section */ 206 | 207 | /* Begin PBXSourcesBuildPhase section */ 208 | 607FACE11AFB9204008FA782 /* Sources */ = { 209 | isa = PBXSourcesBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 213 | ); 214 | runOnlyForDeploymentPostprocessing = 0; 215 | }; 216 | /* End PBXSourcesBuildPhase section */ 217 | 218 | /* Begin XCBuildConfiguration section */ 219 | 607FACED1AFB9204008FA782 /* Debug */ = { 220 | isa = XCBuildConfiguration; 221 | buildSettings = { 222 | ALWAYS_SEARCH_USER_PATHS = NO; 223 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 224 | CLANG_CXX_LIBRARY = "libc++"; 225 | CLANG_ENABLE_MODULES = YES; 226 | CLANG_ENABLE_OBJC_ARC = YES; 227 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 228 | CLANG_WARN_BOOL_CONVERSION = YES; 229 | CLANG_WARN_COMMA = YES; 230 | CLANG_WARN_CONSTANT_CONVERSION = YES; 231 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 232 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 233 | CLANG_WARN_EMPTY_BODY = YES; 234 | CLANG_WARN_ENUM_CONVERSION = YES; 235 | CLANG_WARN_INFINITE_RECURSION = YES; 236 | CLANG_WARN_INT_CONVERSION = YES; 237 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 238 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 239 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 240 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 241 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 242 | CLANG_WARN_STRICT_PROTOTYPES = YES; 243 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 244 | CLANG_WARN_UNREACHABLE_CODE = YES; 245 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 246 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 247 | COPY_PHASE_STRIP = NO; 248 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 249 | ENABLE_STRICT_OBJC_MSGSEND = YES; 250 | ENABLE_TESTABILITY = YES; 251 | GCC_C_LANGUAGE_STANDARD = gnu99; 252 | GCC_DYNAMIC_NO_PIC = NO; 253 | GCC_NO_COMMON_BLOCKS = YES; 254 | GCC_OPTIMIZATION_LEVEL = 0; 255 | GCC_PREPROCESSOR_DEFINITIONS = ( 256 | "DEBUG=1", 257 | "$(inherited)", 258 | ); 259 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 260 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 261 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 262 | GCC_WARN_UNDECLARED_SELECTOR = YES; 263 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 264 | GCC_WARN_UNUSED_FUNCTION = YES; 265 | GCC_WARN_UNUSED_VARIABLE = YES; 266 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 267 | MTL_ENABLE_DEBUG_INFO = YES; 268 | ONLY_ACTIVE_ARCH = YES; 269 | SDKROOT = iphoneos; 270 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 271 | }; 272 | name = Debug; 273 | }; 274 | 607FACEE1AFB9204008FA782 /* Release */ = { 275 | isa = XCBuildConfiguration; 276 | buildSettings = { 277 | ALWAYS_SEARCH_USER_PATHS = NO; 278 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 279 | CLANG_CXX_LIBRARY = "libc++"; 280 | CLANG_ENABLE_MODULES = YES; 281 | CLANG_ENABLE_OBJC_ARC = YES; 282 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 283 | CLANG_WARN_BOOL_CONVERSION = YES; 284 | CLANG_WARN_COMMA = YES; 285 | CLANG_WARN_CONSTANT_CONVERSION = YES; 286 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 287 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 288 | CLANG_WARN_EMPTY_BODY = YES; 289 | CLANG_WARN_ENUM_CONVERSION = YES; 290 | CLANG_WARN_INFINITE_RECURSION = YES; 291 | CLANG_WARN_INT_CONVERSION = YES; 292 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 293 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 294 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 295 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 296 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 297 | CLANG_WARN_STRICT_PROTOTYPES = YES; 298 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 299 | CLANG_WARN_UNREACHABLE_CODE = YES; 300 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 301 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 302 | COPY_PHASE_STRIP = NO; 303 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 304 | ENABLE_NS_ASSERTIONS = NO; 305 | ENABLE_STRICT_OBJC_MSGSEND = YES; 306 | GCC_C_LANGUAGE_STANDARD = gnu99; 307 | GCC_NO_COMMON_BLOCKS = YES; 308 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 309 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 310 | GCC_WARN_UNDECLARED_SELECTOR = YES; 311 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 312 | GCC_WARN_UNUSED_FUNCTION = YES; 313 | GCC_WARN_UNUSED_VARIABLE = YES; 314 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 315 | MTL_ENABLE_DEBUG_INFO = NO; 316 | SDKROOT = iphoneos; 317 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 318 | VALIDATE_PRODUCT = YES; 319 | }; 320 | name = Release; 321 | }; 322 | 607FACF31AFB9204008FA782 /* Debug */ = { 323 | isa = XCBuildConfiguration; 324 | baseConfigurationReference = C6F0284BAF56442EF0E69E9B /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */; 325 | buildSettings = { 326 | FRAMEWORK_SEARCH_PATHS = ( 327 | "$(SDKROOT)/Developer/Library/Frameworks", 328 | "$(inherited)", 329 | ); 330 | GCC_PREPROCESSOR_DEFINITIONS = ( 331 | "DEBUG=1", 332 | "$(inherited)", 333 | ); 334 | INFOPLIST_FILE = Tests/Info.plist; 335 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 336 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 337 | PRODUCT_NAME = "$(TARGET_NAME)"; 338 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 339 | SWIFT_VERSION = 4.0; 340 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LayoutLoopHunter_Example.app/LayoutLoopHunter_Example"; 341 | }; 342 | name = Debug; 343 | }; 344 | 607FACF41AFB9204008FA782 /* Release */ = { 345 | isa = XCBuildConfiguration; 346 | baseConfigurationReference = 0EE3D5DD8672C2F84B06FEE7 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */; 347 | buildSettings = { 348 | FRAMEWORK_SEARCH_PATHS = ( 349 | "$(SDKROOT)/Developer/Library/Frameworks", 350 | "$(inherited)", 351 | ); 352 | INFOPLIST_FILE = Tests/Info.plist; 353 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 354 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 355 | PRODUCT_NAME = "$(TARGET_NAME)"; 356 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 357 | SWIFT_VERSION = 4.0; 358 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LayoutLoopHunter_Example.app/LayoutLoopHunter_Example"; 359 | }; 360 | name = Release; 361 | }; 362 | /* End XCBuildConfiguration section */ 363 | 364 | /* Begin XCConfigurationList section */ 365 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "LayoutLoopHunter" */ = { 366 | isa = XCConfigurationList; 367 | buildConfigurations = ( 368 | 607FACED1AFB9204008FA782 /* Debug */, 369 | 607FACEE1AFB9204008FA782 /* Release */, 370 | ); 371 | defaultConfigurationIsVisible = 0; 372 | defaultConfigurationName = Release; 373 | }; 374 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "LayoutLoopHunter_Tests" */ = { 375 | isa = XCConfigurationList; 376 | buildConfigurations = ( 377 | 607FACF31AFB9204008FA782 /* Debug */, 378 | 607FACF41AFB9204008FA782 /* Release */, 379 | ); 380 | defaultConfigurationIsVisible = 0; 381 | defaultConfigurationName = Release; 382 | }; 383 | /* End XCConfigurationList section */ 384 | }; 385 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 386 | } 387 | -------------------------------------------------------------------------------- /Example/LayoutLoopHunter.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/LayoutLoopHunter.xcodeproj/xcshareddata/xcschemes/LayoutLoopHunter-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 99 | 105 | 106 | 107 | 108 | 110 | 111 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /Example/LayoutLoopHunter.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/LayoutLoopHunter.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | target 'LayoutLoopHunter_Tests' do 3 | pod 'LayoutLoopHunter', :path => '../' 4 | 5 | 6 | end 7 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LayoutLoopHunter (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - LayoutLoopHunter (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | LayoutLoopHunter: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | LayoutLoopHunter: 0ada07536a82d44d663d1f57dcc3f8a9e1515205 13 | 14 | PODFILE CHECKSUM: 669f09ac12630b4e739243cc23b1dcfd6cac8ab5 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/LayoutLoopHunter.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LayoutLoopHunter", 3 | "version": "0.1.0", 4 | "summary": "A short description of LayoutLoopHunter.", 5 | "description": "TODO: Add long description of the pod here.", 6 | "homepage": "https://github.com/rsrbk/LayoutLoopHunter", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "rsrbk": "rsrbk1@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/rsrbk/LayoutLoopHunter.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "source_files": "LayoutLoopHunter/Classes/**/*" 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LayoutLoopHunter (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - LayoutLoopHunter (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | LayoutLoopHunter: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | LayoutLoopHunter: 0ada07536a82d44d663d1f57dcc3f8a9e1515205 13 | 14 | PODFILE CHECKSUM: 669f09ac12630b4e739243cc23b1dcfd6cac8ab5 15 | 16 | COCOAPODS: 1.5.3 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2AE228EEFA480E1A45A03CCBDD924C20 /* Pods-LayoutLoopHunter_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D03A4616C0E904E1E296854B4CAF5D92 /* Pods-LayoutLoopHunter_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 37F6749321E4640200AC5F3A /* LayoutLoopHunter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F6749221E4640200AC5F3A /* LayoutLoopHunter.swift */; }; 12 | 65E483818823CA042E371E1A6A723938 /* Pods-LayoutLoopHunter_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 12EF04A25BC00BDF2AF4753F60E0FD7D /* Pods-LayoutLoopHunter_Tests-dummy.m */; }; 13 | 65E6D0A408EF34E7D1B798B71EE71BAC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */; }; 14 | 74BB50F055B47AB86051E91EBC4A7901 /* LayoutLoopHunter-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0777951AA129BD4A352A323DDE308F41 /* LayoutLoopHunter-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | 8BA145B78F33E7B508DFA70C9EBE71C4 /* LayoutLoopHunter-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B36030AC104A61BF8D3DC2082C9DA816 /* LayoutLoopHunter-dummy.m */; }; 16 | E0C2CF1F59E9245396761F91DF83C6B5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXContainerItemProxy section */ 20 | E223A5BCDD686162EA5FC79856701807 /* PBXContainerItemProxy */ = { 21 | isa = PBXContainerItemProxy; 22 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 23 | proxyType = 1; 24 | remoteGlobalIDString = B284EE4CC19350D9BB485CA2407F7FF5; 25 | remoteInfo = LayoutLoopHunter; 26 | }; 27 | /* End PBXContainerItemProxy section */ 28 | 29 | /* Begin PBXFileReference section */ 30 | 0777951AA129BD4A352A323DDE308F41 /* LayoutLoopHunter-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LayoutLoopHunter-umbrella.h"; sourceTree = ""; }; 31 | 12EF04A25BC00BDF2AF4753F60E0FD7D /* Pods-LayoutLoopHunter_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LayoutLoopHunter_Tests-dummy.m"; sourceTree = ""; }; 32 | 23CED6DE2B8235EB8A93EA1F79DF6D91 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LayoutLoopHunter_Tests.release.xcconfig"; sourceTree = ""; }; 33 | 2C18B54D9CAE6B58F03920FA4DE1CC6D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 34 | 3196F533F7E3D0F0C6DE0C9DDD814195 /* LayoutLoopHunter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutLoopHunter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 37F6749221E4640200AC5F3A /* LayoutLoopHunter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LayoutLoopHunter.swift; path = LayoutLoopHunter/Classes/LayoutLoopHunter.swift; sourceTree = ""; }; 36 | 3DC98224B1D2DBBCF026DEE277A40909 /* Pods_LayoutLoopHunter_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LayoutLoopHunter_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | 4CE5055C8CCFD7B568D9DABBCA31B65C /* LayoutLoopHunter.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LayoutLoopHunter.modulemap; sourceTree = ""; }; 38 | 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 39 | 7584352681F489CA8C138013CF944006 /* LayoutLoopHunter-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LayoutLoopHunter-prefix.pch"; sourceTree = ""; }; 40 | 7D13E7B056BBD32D6BDD785DB629FAE4 /* Pods-LayoutLoopHunter_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LayoutLoopHunter_Tests-resources.sh"; sourceTree = ""; }; 41 | 86B16D714ADA6076B2BE46C417812F14 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 42 | 8854ACA18A1C136FC2A61C69B2E283CD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 44 | 955000904A8515128797798161C499D3 /* Pods-LayoutLoopHunter_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LayoutLoopHunter_Tests-acknowledgements.plist"; sourceTree = ""; }; 45 | 9AA599EE9A40B5CDB369E26A5926B848 /* LayoutLoopHunter.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = LayoutLoopHunter.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 46 | A3340D4D925DB196C30A7AB6ABE319B4 /* LayoutLoopHunter.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LayoutLoopHunter.xcconfig; sourceTree = ""; }; 47 | A785AA52B5EABEBB68D6501439229A47 /* Pods-LayoutLoopHunter_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LayoutLoopHunter_Tests-frameworks.sh"; sourceTree = ""; }; 48 | A7B428D59875FEDBAFE97CFBCCCB51DF /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 49 | B36030AC104A61BF8D3DC2082C9DA816 /* LayoutLoopHunter-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LayoutLoopHunter-dummy.m"; sourceTree = ""; }; 50 | CE167BF2E1E23739A79983E573C030D6 /* Pods-LayoutLoopHunter_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LayoutLoopHunter_Tests-acknowledgements.markdown"; sourceTree = ""; }; 51 | CFCC3D914FAD4845A07C57BDED34EA14 /* Pods-LayoutLoopHunter_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LayoutLoopHunter_Tests.modulemap"; sourceTree = ""; }; 52 | D03A4616C0E904E1E296854B4CAF5D92 /* Pods-LayoutLoopHunter_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LayoutLoopHunter_Tests-umbrella.h"; sourceTree = ""; }; 53 | FFCAFC9A10A25EA8971034271F031144 /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LayoutLoopHunter_Tests.debug.xcconfig"; sourceTree = ""; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | 8E21582D57E08BC1EE0969D9F4ED8581 /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | 65E6D0A408EF34E7D1B798B71EE71BAC /* Foundation.framework in Frameworks */, 62 | ); 63 | runOnlyForDeploymentPostprocessing = 0; 64 | }; 65 | E6F783A3726AE9C39C53B685AEB846D8 /* Frameworks */ = { 66 | isa = PBXFrameworksBuildPhase; 67 | buildActionMask = 2147483647; 68 | files = ( 69 | E0C2CF1F59E9245396761F91DF83C6B5 /* Foundation.framework in Frameworks */, 70 | ); 71 | runOnlyForDeploymentPostprocessing = 0; 72 | }; 73 | /* End PBXFrameworksBuildPhase section */ 74 | 75 | /* Begin PBXGroup section */ 76 | 4AFD994D591F47C7AC5E21178F2CB7F8 /* Products */ = { 77 | isa = PBXGroup; 78 | children = ( 79 | 3196F533F7E3D0F0C6DE0C9DDD814195 /* LayoutLoopHunter.framework */, 80 | 3DC98224B1D2DBBCF026DEE277A40909 /* Pods_LayoutLoopHunter_Tests.framework */, 81 | ); 82 | name = Products; 83 | sourceTree = ""; 84 | }; 85 | 5E0D919E635D23B70123790B8308F8EF /* iOS */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 5A16F4CFC63FAC439D7A04994F579A03 /* Foundation.framework */, 89 | ); 90 | name = iOS; 91 | sourceTree = ""; 92 | }; 93 | 767327DC5AA8DA9A2427357A94522439 /* LayoutLoopHunter */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 37F6749221E4640200AC5F3A /* LayoutLoopHunter.swift */, 97 | 9DC86752283292D5B6751518539C5AC2 /* Pod */, 98 | A9F9B81483ABEEE00528EB81D1D08C1F /* Support Files */, 99 | ); 100 | name = LayoutLoopHunter; 101 | path = ../..; 102 | sourceTree = ""; 103 | }; 104 | 7DB346D0F39D3F0E887471402A8071AB = { 105 | isa = PBXGroup; 106 | children = ( 107 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 108 | CE73637AB5156610A6A51BF4D06C1E19 /* Development Pods */, 109 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 110 | 4AFD994D591F47C7AC5E21178F2CB7F8 /* Products */, 111 | E43B62E050A86146BECC8900E861CAD3 /* Targets Support Files */, 112 | ); 113 | sourceTree = ""; 114 | }; 115 | 9DC86752283292D5B6751518539C5AC2 /* Pod */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | 9AA599EE9A40B5CDB369E26A5926B848 /* LayoutLoopHunter.podspec */, 119 | 2C18B54D9CAE6B58F03920FA4DE1CC6D /* LICENSE */, 120 | A7B428D59875FEDBAFE97CFBCCCB51DF /* README.md */, 121 | ); 122 | name = Pod; 123 | sourceTree = ""; 124 | }; 125 | A196A269BAD84665440887C902D05173 /* Pods-LayoutLoopHunter_Tests */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | 86B16D714ADA6076B2BE46C417812F14 /* Info.plist */, 129 | CFCC3D914FAD4845A07C57BDED34EA14 /* Pods-LayoutLoopHunter_Tests.modulemap */, 130 | CE167BF2E1E23739A79983E573C030D6 /* Pods-LayoutLoopHunter_Tests-acknowledgements.markdown */, 131 | 955000904A8515128797798161C499D3 /* Pods-LayoutLoopHunter_Tests-acknowledgements.plist */, 132 | 12EF04A25BC00BDF2AF4753F60E0FD7D /* Pods-LayoutLoopHunter_Tests-dummy.m */, 133 | A785AA52B5EABEBB68D6501439229A47 /* Pods-LayoutLoopHunter_Tests-frameworks.sh */, 134 | 7D13E7B056BBD32D6BDD785DB629FAE4 /* Pods-LayoutLoopHunter_Tests-resources.sh */, 135 | D03A4616C0E904E1E296854B4CAF5D92 /* Pods-LayoutLoopHunter_Tests-umbrella.h */, 136 | FFCAFC9A10A25EA8971034271F031144 /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */, 137 | 23CED6DE2B8235EB8A93EA1F79DF6D91 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */, 138 | ); 139 | name = "Pods-LayoutLoopHunter_Tests"; 140 | path = "Target Support Files/Pods-LayoutLoopHunter_Tests"; 141 | sourceTree = ""; 142 | }; 143 | A9F9B81483ABEEE00528EB81D1D08C1F /* Support Files */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 8854ACA18A1C136FC2A61C69B2E283CD /* Info.plist */, 147 | 4CE5055C8CCFD7B568D9DABBCA31B65C /* LayoutLoopHunter.modulemap */, 148 | A3340D4D925DB196C30A7AB6ABE319B4 /* LayoutLoopHunter.xcconfig */, 149 | B36030AC104A61BF8D3DC2082C9DA816 /* LayoutLoopHunter-dummy.m */, 150 | 7584352681F489CA8C138013CF944006 /* LayoutLoopHunter-prefix.pch */, 151 | 0777951AA129BD4A352A323DDE308F41 /* LayoutLoopHunter-umbrella.h */, 152 | ); 153 | name = "Support Files"; 154 | path = "Example/Pods/Target Support Files/LayoutLoopHunter"; 155 | sourceTree = ""; 156 | }; 157 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 5E0D919E635D23B70123790B8308F8EF /* iOS */, 161 | ); 162 | name = Frameworks; 163 | sourceTree = ""; 164 | }; 165 | CE73637AB5156610A6A51BF4D06C1E19 /* Development Pods */ = { 166 | isa = PBXGroup; 167 | children = ( 168 | 767327DC5AA8DA9A2427357A94522439 /* LayoutLoopHunter */, 169 | ); 170 | name = "Development Pods"; 171 | sourceTree = ""; 172 | }; 173 | E43B62E050A86146BECC8900E861CAD3 /* Targets Support Files */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | A196A269BAD84665440887C902D05173 /* Pods-LayoutLoopHunter_Tests */, 177 | ); 178 | name = "Targets Support Files"; 179 | sourceTree = ""; 180 | }; 181 | /* End PBXGroup section */ 182 | 183 | /* Begin PBXHeadersBuildPhase section */ 184 | 47A89863232C40EE7BDB1B5E791377E3 /* Headers */ = { 185 | isa = PBXHeadersBuildPhase; 186 | buildActionMask = 2147483647; 187 | files = ( 188 | 2AE228EEFA480E1A45A03CCBDD924C20 /* Pods-LayoutLoopHunter_Tests-umbrella.h in Headers */, 189 | ); 190 | runOnlyForDeploymentPostprocessing = 0; 191 | }; 192 | 5ED5FF40F7A6C2646C70C8FBC8C79DD1 /* Headers */ = { 193 | isa = PBXHeadersBuildPhase; 194 | buildActionMask = 2147483647; 195 | files = ( 196 | 74BB50F055B47AB86051E91EBC4A7901 /* LayoutLoopHunter-umbrella.h in Headers */, 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | }; 200 | /* End PBXHeadersBuildPhase section */ 201 | 202 | /* Begin PBXNativeTarget section */ 203 | 1420EC204E5C9AAFF9F37AC957D02E70 /* Pods-LayoutLoopHunter_Tests */ = { 204 | isa = PBXNativeTarget; 205 | buildConfigurationList = 8DD8468E3FE8973EEADB12F04B04EFF0 /* Build configuration list for PBXNativeTarget "Pods-LayoutLoopHunter_Tests" */; 206 | buildPhases = ( 207 | 6A43BF69D18411010127804CAE150F3D /* Sources */, 208 | 8E21582D57E08BC1EE0969D9F4ED8581 /* Frameworks */, 209 | 47A89863232C40EE7BDB1B5E791377E3 /* Headers */, 210 | ); 211 | buildRules = ( 212 | ); 213 | dependencies = ( 214 | EF881F011A0A21E0C9AF91F846DE76F3 /* PBXTargetDependency */, 215 | ); 216 | name = "Pods-LayoutLoopHunter_Tests"; 217 | productName = "Pods-LayoutLoopHunter_Tests"; 218 | productReference = 3DC98224B1D2DBBCF026DEE277A40909 /* Pods_LayoutLoopHunter_Tests.framework */; 219 | productType = "com.apple.product-type.framework"; 220 | }; 221 | B284EE4CC19350D9BB485CA2407F7FF5 /* LayoutLoopHunter */ = { 222 | isa = PBXNativeTarget; 223 | buildConfigurationList = 53D8F175B939CC99F2F266FF14FAD9D3 /* Build configuration list for PBXNativeTarget "LayoutLoopHunter" */; 224 | buildPhases = ( 225 | EDBBD5FAB60FE06866037024C705F1F7 /* Sources */, 226 | E6F783A3726AE9C39C53B685AEB846D8 /* Frameworks */, 227 | 5ED5FF40F7A6C2646C70C8FBC8C79DD1 /* Headers */, 228 | ); 229 | buildRules = ( 230 | ); 231 | dependencies = ( 232 | ); 233 | name = LayoutLoopHunter; 234 | productName = LayoutLoopHunter; 235 | productReference = 3196F533F7E3D0F0C6DE0C9DDD814195 /* LayoutLoopHunter.framework */; 236 | productType = "com.apple.product-type.framework"; 237 | }; 238 | /* End PBXNativeTarget section */ 239 | 240 | /* Begin PBXProject section */ 241 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 242 | isa = PBXProject; 243 | attributes = { 244 | LastSwiftUpdateCheck = 0930; 245 | LastUpgradeCheck = 0930; 246 | }; 247 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 248 | compatibilityVersion = "Xcode 3.2"; 249 | developmentRegion = English; 250 | hasScannedForEncodings = 0; 251 | knownRegions = ( 252 | en, 253 | ); 254 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 255 | productRefGroup = 4AFD994D591F47C7AC5E21178F2CB7F8 /* Products */; 256 | projectDirPath = ""; 257 | projectRoot = ""; 258 | targets = ( 259 | B284EE4CC19350D9BB485CA2407F7FF5 /* LayoutLoopHunter */, 260 | 1420EC204E5C9AAFF9F37AC957D02E70 /* Pods-LayoutLoopHunter_Tests */, 261 | ); 262 | }; 263 | /* End PBXProject section */ 264 | 265 | /* Begin PBXSourcesBuildPhase section */ 266 | 6A43BF69D18411010127804CAE150F3D /* Sources */ = { 267 | isa = PBXSourcesBuildPhase; 268 | buildActionMask = 2147483647; 269 | files = ( 270 | 65E483818823CA042E371E1A6A723938 /* Pods-LayoutLoopHunter_Tests-dummy.m in Sources */, 271 | ); 272 | runOnlyForDeploymentPostprocessing = 0; 273 | }; 274 | EDBBD5FAB60FE06866037024C705F1F7 /* Sources */ = { 275 | isa = PBXSourcesBuildPhase; 276 | buildActionMask = 2147483647; 277 | files = ( 278 | 8BA145B78F33E7B508DFA70C9EBE71C4 /* LayoutLoopHunter-dummy.m in Sources */, 279 | 37F6749321E4640200AC5F3A /* LayoutLoopHunter.swift in Sources */, 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXSourcesBuildPhase section */ 284 | 285 | /* Begin PBXTargetDependency section */ 286 | EF881F011A0A21E0C9AF91F846DE76F3 /* PBXTargetDependency */ = { 287 | isa = PBXTargetDependency; 288 | name = LayoutLoopHunter; 289 | target = B284EE4CC19350D9BB485CA2407F7FF5 /* LayoutLoopHunter */; 290 | targetProxy = E223A5BCDD686162EA5FC79856701807 /* PBXContainerItemProxy */; 291 | }; 292 | /* End PBXTargetDependency section */ 293 | 294 | /* Begin XCBuildConfiguration section */ 295 | 4975229698EFF4C19FC83015B0011FF6 /* Release */ = { 296 | isa = XCBuildConfiguration; 297 | baseConfigurationReference = A3340D4D925DB196C30A7AB6ABE319B4 /* LayoutLoopHunter.xcconfig */; 298 | buildSettings = { 299 | CODE_SIGN_IDENTITY = ""; 300 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 301 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 302 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 303 | CURRENT_PROJECT_VERSION = 1; 304 | DEFINES_MODULE = YES; 305 | DYLIB_COMPATIBILITY_VERSION = 1; 306 | DYLIB_CURRENT_VERSION = 1; 307 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 308 | GCC_PREFIX_HEADER = "Target Support Files/LayoutLoopHunter/LayoutLoopHunter-prefix.pch"; 309 | INFOPLIST_FILE = "Target Support Files/LayoutLoopHunter/Info.plist"; 310 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 311 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 312 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 313 | MODULEMAP_FILE = "Target Support Files/LayoutLoopHunter/LayoutLoopHunter.modulemap"; 314 | PRODUCT_MODULE_NAME = LayoutLoopHunter; 315 | PRODUCT_NAME = LayoutLoopHunter; 316 | SDKROOT = iphoneos; 317 | SKIP_INSTALL = YES; 318 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 319 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 320 | SWIFT_VERSION = 4.0; 321 | TARGETED_DEVICE_FAMILY = "1,2"; 322 | VALIDATE_PRODUCT = YES; 323 | VERSIONING_SYSTEM = "apple-generic"; 324 | VERSION_INFO_PREFIX = ""; 325 | }; 326 | name = Release; 327 | }; 328 | 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */ = { 329 | isa = XCBuildConfiguration; 330 | buildSettings = { 331 | ALWAYS_SEARCH_USER_PATHS = NO; 332 | CLANG_ANALYZER_NONNULL = YES; 333 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 334 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 335 | CLANG_CXX_LIBRARY = "libc++"; 336 | CLANG_ENABLE_MODULES = YES; 337 | CLANG_ENABLE_OBJC_ARC = YES; 338 | CLANG_ENABLE_OBJC_WEAK = YES; 339 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 340 | CLANG_WARN_BOOL_CONVERSION = YES; 341 | CLANG_WARN_COMMA = YES; 342 | CLANG_WARN_CONSTANT_CONVERSION = YES; 343 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 344 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 345 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 346 | CLANG_WARN_EMPTY_BODY = YES; 347 | CLANG_WARN_ENUM_CONVERSION = YES; 348 | CLANG_WARN_INFINITE_RECURSION = YES; 349 | CLANG_WARN_INT_CONVERSION = YES; 350 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 351 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 352 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 353 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 354 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 355 | CLANG_WARN_STRICT_PROTOTYPES = YES; 356 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 357 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 358 | CLANG_WARN_UNREACHABLE_CODE = YES; 359 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 360 | CODE_SIGNING_ALLOWED = NO; 361 | CODE_SIGNING_REQUIRED = NO; 362 | COPY_PHASE_STRIP = NO; 363 | DEBUG_INFORMATION_FORMAT = dwarf; 364 | ENABLE_STRICT_OBJC_MSGSEND = YES; 365 | ENABLE_TESTABILITY = YES; 366 | GCC_C_LANGUAGE_STANDARD = gnu11; 367 | GCC_DYNAMIC_NO_PIC = NO; 368 | GCC_NO_COMMON_BLOCKS = YES; 369 | GCC_OPTIMIZATION_LEVEL = 0; 370 | GCC_PREPROCESSOR_DEFINITIONS = ( 371 | "POD_CONFIGURATION_DEBUG=1", 372 | "DEBUG=1", 373 | "$(inherited)", 374 | ); 375 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 376 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 377 | GCC_WARN_UNDECLARED_SELECTOR = YES; 378 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 379 | GCC_WARN_UNUSED_FUNCTION = YES; 380 | GCC_WARN_UNUSED_VARIABLE = YES; 381 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 382 | MTL_ENABLE_DEBUG_INFO = YES; 383 | ONLY_ACTIVE_ARCH = YES; 384 | PRODUCT_NAME = "$(TARGET_NAME)"; 385 | STRIP_INSTALLED_PRODUCT = NO; 386 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 387 | SYMROOT = "${SRCROOT}/../build"; 388 | }; 389 | name = Debug; 390 | }; 391 | 9891C1D9F61687520819B9E95B986407 /* Debug */ = { 392 | isa = XCBuildConfiguration; 393 | baseConfigurationReference = FFCAFC9A10A25EA8971034271F031144 /* Pods-LayoutLoopHunter_Tests.debug.xcconfig */; 394 | buildSettings = { 395 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 396 | CODE_SIGN_IDENTITY = ""; 397 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 398 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 399 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 400 | CURRENT_PROJECT_VERSION = 1; 401 | DEFINES_MODULE = YES; 402 | DYLIB_COMPATIBILITY_VERSION = 1; 403 | DYLIB_CURRENT_VERSION = 1; 404 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 405 | INFOPLIST_FILE = "Target Support Files/Pods-LayoutLoopHunter_Tests/Info.plist"; 406 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 407 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 408 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 409 | MACH_O_TYPE = staticlib; 410 | MODULEMAP_FILE = "Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.modulemap"; 411 | OTHER_LDFLAGS = ""; 412 | OTHER_LIBTOOLFLAGS = ""; 413 | PODS_ROOT = "$(SRCROOT)"; 414 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 415 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 416 | SDKROOT = iphoneos; 417 | SKIP_INSTALL = YES; 418 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 419 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 420 | TARGETED_DEVICE_FAMILY = "1,2"; 421 | VERSIONING_SYSTEM = "apple-generic"; 422 | VERSION_INFO_PREFIX = ""; 423 | }; 424 | name = Debug; 425 | }; 426 | B42B54097A876E8A982CBF5DAA91B1AB /* Release */ = { 427 | isa = XCBuildConfiguration; 428 | buildSettings = { 429 | ALWAYS_SEARCH_USER_PATHS = NO; 430 | CLANG_ANALYZER_NONNULL = YES; 431 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 432 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 433 | CLANG_CXX_LIBRARY = "libc++"; 434 | CLANG_ENABLE_MODULES = YES; 435 | CLANG_ENABLE_OBJC_ARC = YES; 436 | CLANG_ENABLE_OBJC_WEAK = YES; 437 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 438 | CLANG_WARN_BOOL_CONVERSION = YES; 439 | CLANG_WARN_COMMA = YES; 440 | CLANG_WARN_CONSTANT_CONVERSION = YES; 441 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 442 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 443 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 444 | CLANG_WARN_EMPTY_BODY = YES; 445 | CLANG_WARN_ENUM_CONVERSION = YES; 446 | CLANG_WARN_INFINITE_RECURSION = YES; 447 | CLANG_WARN_INT_CONVERSION = YES; 448 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 449 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 450 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 451 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 452 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 453 | CLANG_WARN_STRICT_PROTOTYPES = YES; 454 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 455 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 456 | CLANG_WARN_UNREACHABLE_CODE = YES; 457 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 458 | CODE_SIGNING_ALLOWED = NO; 459 | CODE_SIGNING_REQUIRED = NO; 460 | COPY_PHASE_STRIP = NO; 461 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 462 | ENABLE_NS_ASSERTIONS = NO; 463 | ENABLE_STRICT_OBJC_MSGSEND = YES; 464 | GCC_C_LANGUAGE_STANDARD = gnu11; 465 | GCC_NO_COMMON_BLOCKS = YES; 466 | GCC_PREPROCESSOR_DEFINITIONS = ( 467 | "POD_CONFIGURATION_RELEASE=1", 468 | "$(inherited)", 469 | ); 470 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 471 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 472 | GCC_WARN_UNDECLARED_SELECTOR = YES; 473 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 474 | GCC_WARN_UNUSED_FUNCTION = YES; 475 | GCC_WARN_UNUSED_VARIABLE = YES; 476 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 477 | MTL_ENABLE_DEBUG_INFO = NO; 478 | PRODUCT_NAME = "$(TARGET_NAME)"; 479 | STRIP_INSTALLED_PRODUCT = NO; 480 | SYMROOT = "${SRCROOT}/../build"; 481 | }; 482 | name = Release; 483 | }; 484 | B62B4B6C519A1E9A3575DFD4FAFA01CC /* Debug */ = { 485 | isa = XCBuildConfiguration; 486 | baseConfigurationReference = A3340D4D925DB196C30A7AB6ABE319B4 /* LayoutLoopHunter.xcconfig */; 487 | buildSettings = { 488 | CODE_SIGN_IDENTITY = ""; 489 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 490 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 491 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 492 | CURRENT_PROJECT_VERSION = 1; 493 | DEFINES_MODULE = YES; 494 | DYLIB_COMPATIBILITY_VERSION = 1; 495 | DYLIB_CURRENT_VERSION = 1; 496 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 497 | GCC_PREFIX_HEADER = "Target Support Files/LayoutLoopHunter/LayoutLoopHunter-prefix.pch"; 498 | INFOPLIST_FILE = "Target Support Files/LayoutLoopHunter/Info.plist"; 499 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 500 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 501 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 502 | MODULEMAP_FILE = "Target Support Files/LayoutLoopHunter/LayoutLoopHunter.modulemap"; 503 | PRODUCT_MODULE_NAME = LayoutLoopHunter; 504 | PRODUCT_NAME = LayoutLoopHunter; 505 | SDKROOT = iphoneos; 506 | SKIP_INSTALL = YES; 507 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 508 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 509 | SWIFT_VERSION = 4.0; 510 | TARGETED_DEVICE_FAMILY = "1,2"; 511 | VERSIONING_SYSTEM = "apple-generic"; 512 | VERSION_INFO_PREFIX = ""; 513 | }; 514 | name = Debug; 515 | }; 516 | CEF44B30D8BF60A9DB45370C303C4FE7 /* Release */ = { 517 | isa = XCBuildConfiguration; 518 | baseConfigurationReference = 23CED6DE2B8235EB8A93EA1F79DF6D91 /* Pods-LayoutLoopHunter_Tests.release.xcconfig */; 519 | buildSettings = { 520 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 521 | CODE_SIGN_IDENTITY = ""; 522 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 523 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 524 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 525 | CURRENT_PROJECT_VERSION = 1; 526 | DEFINES_MODULE = YES; 527 | DYLIB_COMPATIBILITY_VERSION = 1; 528 | DYLIB_CURRENT_VERSION = 1; 529 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 530 | INFOPLIST_FILE = "Target Support Files/Pods-LayoutLoopHunter_Tests/Info.plist"; 531 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 532 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 533 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 534 | MACH_O_TYPE = staticlib; 535 | MODULEMAP_FILE = "Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.modulemap"; 536 | OTHER_LDFLAGS = ""; 537 | OTHER_LIBTOOLFLAGS = ""; 538 | PODS_ROOT = "$(SRCROOT)"; 539 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 540 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 541 | SDKROOT = iphoneos; 542 | SKIP_INSTALL = YES; 543 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 544 | TARGETED_DEVICE_FAMILY = "1,2"; 545 | VALIDATE_PRODUCT = YES; 546 | VERSIONING_SYSTEM = "apple-generic"; 547 | VERSION_INFO_PREFIX = ""; 548 | }; 549 | name = Release; 550 | }; 551 | /* End XCBuildConfiguration section */ 552 | 553 | /* Begin XCConfigurationList section */ 554 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 555 | isa = XCConfigurationList; 556 | buildConfigurations = ( 557 | 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */, 558 | B42B54097A876E8A982CBF5DAA91B1AB /* Release */, 559 | ); 560 | defaultConfigurationIsVisible = 0; 561 | defaultConfigurationName = Release; 562 | }; 563 | 53D8F175B939CC99F2F266FF14FAD9D3 /* Build configuration list for PBXNativeTarget "LayoutLoopHunter" */ = { 564 | isa = XCConfigurationList; 565 | buildConfigurations = ( 566 | B62B4B6C519A1E9A3575DFD4FAFA01CC /* Debug */, 567 | 4975229698EFF4C19FC83015B0011FF6 /* Release */, 568 | ); 569 | defaultConfigurationIsVisible = 0; 570 | defaultConfigurationName = Release; 571 | }; 572 | 8DD8468E3FE8973EEADB12F04B04EFF0 /* Build configuration list for PBXNativeTarget "Pods-LayoutLoopHunter_Tests" */ = { 573 | isa = XCConfigurationList; 574 | buildConfigurations = ( 575 | 9891C1D9F61687520819B9E95B986407 /* Debug */, 576 | CEF44B30D8BF60A9DB45370C303C4FE7 /* Release */, 577 | ); 578 | defaultConfigurationIsVisible = 0; 579 | defaultConfigurationName = Release; 580 | }; 581 | /* End XCConfigurationList section */ 582 | }; 583 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 584 | } 585 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/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 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/LayoutLoopHunter-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_LayoutLoopHunter : NSObject 3 | @end 4 | @implementation PodsDummy_LayoutLoopHunter 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/LayoutLoopHunter-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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/LayoutLoopHunter-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 LayoutLoopHunterVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char LayoutLoopHunterVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/LayoutLoopHunter.modulemap: -------------------------------------------------------------------------------- 1 | framework module LayoutLoopHunter { 2 | umbrella header "LayoutLoopHunter-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/LayoutLoopHunter/LayoutLoopHunter.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LayoutLoopHunter 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/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 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## LayoutLoopHunter 5 | 6 | Copyright (c) 2019 rsrbk 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-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 | Copyright (c) 2019 rsrbk <rsrbk1@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | LayoutLoopHunter 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LayoutLoopHunter_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LayoutLoopHunter_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | 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}\"" 80 | 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}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | 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}\"" 94 | 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}" 95 | else 96 | # 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. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | 145 | if [[ "$CONFIGURATION" == "Debug" ]]; then 146 | install_framework "${BUILT_PRODUCTS_DIR}/LayoutLoopHunter/LayoutLoopHunter.framework" 147 | fi 148 | if [[ "$CONFIGURATION" == "Release" ]]; then 149 | install_framework "${BUILT_PRODUCTS_DIR}/LayoutLoopHunter/LayoutLoopHunter.framework" 150 | fi 151 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 152 | wait 153 | fi 154 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | 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 60 | 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} 61 | ;; 62 | *.xib) 63 | 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 64 | 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} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | 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}" 115 | else 116 | 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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests-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_LayoutLoopHunter_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_LayoutLoopHunter_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LayoutLoopHunter" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/LayoutLoopHunter/LayoutLoopHunter.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "LayoutLoopHunter" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_LayoutLoopHunter_Tests { 2 | umbrella header "Pods-LayoutLoopHunter_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-LayoutLoopHunter_Tests/Pods-LayoutLoopHunter_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LayoutLoopHunter" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/LayoutLoopHunter/LayoutLoopHunter.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "LayoutLoopHunter" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Example/Tests/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 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import LayoutLoopHunter 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 rsrbk 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /LayoutLoopHunter.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint LayoutLoopHunter.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'LayoutLoopHunter' 11 | s.version = '1.0' 12 | s.summary = 'Tracking autolayout feedback loops.' 13 | s.swift_version = '4.2' 14 | 15 | # This description is used to generate tags and improve search results. 16 | # * Think: What does it do? Why did you write it? What is the focus? 17 | # * Try to keep it short, snappy and to the point. 18 | # * Write the description between the DESC delimiters below. 19 | # * Finally, don't worry about the indent, CocoaPods strips it! 20 | 21 | s.description = <<-DESC 22 | Runtime-based setup for tracking autolayout feedback loops. 23 | DESC 24 | 25 | s.homepage = 'https://github.com/rsrbk/LayoutLoopHunter' 26 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 27 | s.license = { :type => 'MIT', :file => 'LICENSE' } 28 | s.author = { 'rsrbk' => 'rsrbk1@gmail.com' } 29 | s.source = { :git => 'https://github.com/rsrbk/LayoutLoopHunter.git', :tag => s.version.to_s } 30 | s.social_media_url = 'https://twitter.com/rsrbk123' 31 | 32 | s.ios.deployment_target = '8.0' 33 | 34 | s.source_files = 'LayoutLoopHunter/Classes/**/*' 35 | 36 | # s.resource_bundles = { 37 | # 'LayoutLoopHunter' => ['LayoutLoopHunter/Assets/*.png'] 38 | # } 39 | 40 | # s.public_header_files = 'Pod/Classes/**/*.h' 41 | # s.frameworks = 'UIKit', 'MapKit' 42 | # s.dependency 'AFNetworking', '~> 2.3' 43 | end 44 | -------------------------------------------------------------------------------- /LayoutLoopHunter/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsrbk/LayoutLoopHunter/dda0333b539c059799945e4d29a98ccbfeea5b6c/LayoutLoopHunter/Assets/.gitkeep -------------------------------------------------------------------------------- /LayoutLoopHunter/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsrbk/LayoutLoopHunter/dda0333b539c059799945e4d29a98ccbfeea5b6c/LayoutLoopHunter/Classes/.gitkeep -------------------------------------------------------------------------------- /LayoutLoopHunter/Classes/LayoutLoopHunter.swift: -------------------------------------------------------------------------------- 1 | /* 2 | MIT License 3 | Copyright (c) 2019 Ruslan Serebriakov 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 17 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 18 | SOFTWARE. 19 | */ 20 | 21 | import UIKit 22 | 23 | public struct LayoutLoopHunter { 24 | 25 | struct RuntimeConstants { 26 | static let Prefix = "runtime" 27 | 28 | // Associated objects keys 29 | static var CounterKey = "_counter" 30 | static var ResetWorkItemKey = "_resetWorkItem" 31 | } 32 | 33 | public static func setUp(for view: UIView, threshold: Int = 100, onLoop: @escaping () -> ()) { 34 | // We create the name for our new class based on the prefix for our feature and the original class name 35 | let classFullName = "\(RuntimeConstants.Prefix)_\(String(describing: view.self))" 36 | let originalClass = type(of: view) 37 | 38 | if let trackableClass = objc_allocateClassPair(originalClass, classFullName, 0) { 39 | // This class hasn't been created during the current runtime session 40 | // We need to register our class and swap is with the original view's class 41 | objc_registerClassPair(trackableClass) 42 | object_setClass(view, trackableClass) 43 | 44 | // Now we can create the associated object 45 | objc_setAssociatedObject(view, &RuntimeConstants.CounterKey, 0, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 46 | 47 | // Adding our layoutSubviews implementation 48 | let layoutSubviews: @convention(block) (Any?) -> () = { nullableSelf in 49 | guard let _self = nullableSelf else { return } 50 | 51 | let selector = #selector(originalClass.layoutSubviews) 52 | let originalImpl = class_getMethodImplementation(originalClass, selector) 53 | 54 | // @convention(c) tells Swift this is a bare function pointer (with no context object) 55 | // All Obj-C method functions have the receiver and message as their first two parameters 56 | // Therefore this denotes a method of type `() -> Void`, which matches up with `layoutSubviews` 57 | typealias ObjCVoidVoidFn = @convention(c) (Any, Selector) -> Void 58 | let originalLayoutSubviews = unsafeBitCast(originalImpl, to: ObjCVoidVoidFn.self) 59 | originalLayoutSubviews(view, selector) 60 | 61 | if let counter = objc_getAssociatedObject(_self, &RuntimeConstants.CounterKey) as? Int { 62 | if counter == threshold { 63 | onLoop() 64 | } 65 | 66 | objc_setAssociatedObject(view, &RuntimeConstants.CounterKey, counter+1, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 67 | } 68 | 69 | // Dispatch work item for reseting the counter on every new run loop iteration 70 | if let previousResetWorkItem = objc_getAssociatedObject(view, &RuntimeConstants.ResetWorkItemKey) as? DispatchWorkItem { 71 | previousResetWorkItem.cancel() 72 | } 73 | let counterResetWorkItem = DispatchWorkItem { [weak view] in 74 | guard let strongView = view else { return } 75 | objc_setAssociatedObject(strongView, &RuntimeConstants.CounterKey, 0, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 76 | } 77 | DispatchQueue.main.async(execute: counterResetWorkItem) 78 | objc_setAssociatedObject(view, &RuntimeConstants.ResetWorkItemKey, counterResetWorkItem, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 79 | } 80 | let implementation = imp_implementationWithBlock(layoutSubviews) 81 | class_addMethod(trackableClass, #selector(originalClass.layoutSubviews), implementation, "v@:") 82 | } else if let trackableClass = NSClassFromString(classFullName) { 83 | // We've previously allocated a class with the same name in this runtime session 84 | // We can get it from our raw string and swap with our view the same way 85 | object_setClass(view, trackableClass) 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LayoutLoopHunter 2 | 3 | [![CI Status](https://img.shields.io/travis/rsrbk/LayoutLoopHunter.svg?style=flat)](https://travis-ci.org/rsrbk/LayoutLoopHunter) 4 | [![Version](https://img.shields.io/cocoapods/v/LayoutLoopHunter.svg?style=flat)](https://cocoapods.org/pods/LayoutLoopHunter) 5 | [![License](https://img.shields.io/cocoapods/l/LayoutLoopHunter.svg?style=flat)](https://cocoapods.org/pods/LayoutLoopHunter) 6 | [![Platform](https://img.shields.io/cocoapods/p/LayoutLoopHunter.svg?style=flat)](https://cocoapods.org/pods/LayoutLoopHunter) 7 | 8 | ![img](https://cdn-images-1.medium.com/max/1600/0*zrLTiLtPpTx3nb9-.jpg) 9 | 10 | The library helps to catch the OOMs caused by Autolayout Feedback Loop by replicating the behavior of `UIViewLayoutFeedbackLoopDebuggingThreshold` in the live code. 11 | 12 | This is the final result of the runtime tutorial on [AppCoda](https://www.appcoda.com/layout-feedback-loop/). 13 | 14 | ## Installation 15 | 16 | LayoutLoopHunter is available through [CocoaPods](https://cocoapods.org). To install 17 | it, simply add the following line to your Podfile: 18 | 19 | ```ruby 20 | pod 'LayoutLoopHunter' 21 | ``` 22 | and run `pod install` in your terminal. 23 | 24 | Alternatively, you can manually add the files from the `LayoutLoopHunter` directory to your project. 25 | 26 | ## Usage 27 | 28 | Please use the `setUp` method to set up tracking for your UIView: 29 | ```swift 30 | static func setUp(for view: UIView, threshold: Int = 100, onLoop: @escaping () -> ()) 31 | ``` 32 | The callback will be called when the `layoutSubviews()` method is called a certain amount of times in a single run loop. 33 | 34 | ## Example 35 | 36 | ```swift 37 | LayoutLoopHunter.setUp(for: view) { 38 | print("Hello, world") 39 | } 40 | ``` 41 | ## Author 42 | 43 | Ruslan Serebriakov 44 | 45 | Twitter: [@rsrbk123](https://twitter.com/rsrbk123) 46 | 47 | ## Check out my other libraries 48 | 49 | [SmileToUnlock](https://github.com/rsrbk/SRCountdownTimer) - this library uses ARKit Face Tracking in order to catch a user's smile..
50 | [SRCountdownTimer](https://github.com/rsrbk/SRCountdownTimer) - a simple circle countdown with a configurable timer.
51 | [SRAttractionsMap](https://github.com/rsrbk/SRAttractionsMap) - the map with attractions on which you can click and see the full description. 52 | 53 | ## License 54 | 55 | MIT License 56 | 57 | Copyright (c) 2019 Ruslan Serebriakov 58 | 59 | Permission is hereby granted, free of charge, to any person obtaining a copy 60 | of this software and associated documentation files (the "Software"), to deal 61 | in the Software without restriction, including without limitation the rights 62 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 63 | copies of the Software, and to permit persons to whom the Software is 64 | furnished to do so, subject to the following conditions: 65 | 66 | The above copyright notice and this permission notice shall be included in all 67 | copies or substantial portions of the Software. 68 | 69 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 70 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 71 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 72 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 73 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 74 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 75 | SOFTWARE. 76 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------