From 98cd449d93da761b7dac09b7fe79beb814d327c8 Mon Sep 17 00:00:00 2001 From: Andrey Yastrebov Date: Sun, 11 Mar 2018 19:01:56 +0300 Subject: [PATCH 1/5] - update to swift 4 --- Example/Podfile.lock | 6 +- Example/Pods/Manifest.lock | 6 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 785 +++++++++--------- .../xcschemes/Reusable-iOS.xcscheme | 4 +- .../xcschemes/Reusable-tvOS.xcscheme | 4 +- .../Pods-ReusableDemo iOS-frameworks.sh | 63 +- .../Pods-ReusableDemo iOS-resources.sh | 25 +- .../Pods-ReusableDemo iOS.debug.xcconfig | 9 +- .../Pods-ReusableDemo iOS.release.xcconfig | 9 +- .../Pods-ReusableDemo tvOS/Info.plist | 4 - .../Pods-ReusableDemo tvOS-frameworks.sh | 63 +- .../Pods-ReusableDemo tvOS-resources.sh | 25 +- .../Pods-ReusableDemo tvOS.debug.xcconfig | 9 +- .../Pods-ReusableDemo tvOS.release.xcconfig | 9 +- .../Reusable-iOS/Reusable-iOS.xcconfig | 6 +- .../Reusable-tvOS/Info.plist | 4 - .../Reusable-tvOS/Reusable-tvOS.xcconfig | 6 +- .../ReusableDemo.xcodeproj/project.pbxproj | 38 +- .../xcschemes/ReusableDemo iOS.xcscheme | 4 +- .../xcschemes/ReusableDemo tvOS.xcscheme | 4 +- 20 files changed, 611 insertions(+), 472 deletions(-) diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 9b2dc40..a3b2647 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -10,11 +10,11 @@ DEPENDENCIES: EXTERNAL SOURCES: Reusable: - :path: "../" + :path: ../ SPEC CHECKSUMS: - Reusable: 3531383aa0f4ed12aed3c68546332b25b84889aa + Reusable: 3f2911673b67eb6d1ddedaaafe3815048423f34a PODFILE CHECKSUM: 2e4cfd412f90711e15fcfa281c33e3b31f1e90b8 -COCOAPODS: 1.2.0 +COCOAPODS: 1.4.0 diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 9b2dc40..a3b2647 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -10,11 +10,11 @@ DEPENDENCIES: EXTERNAL SOURCES: Reusable: - :path: "../" + :path: ../ SPEC CHECKSUMS: - Reusable: 3531383aa0f4ed12aed3c68546332b25b84889aa + Reusable: 3f2911673b67eb6d1ddedaaafe3815048423f34a PODFILE CHECKSUM: 2e4cfd412f90711e15fcfa281c33e3b31f1e90b8 -COCOAPODS: 1.2.0 +COCOAPODS: 1.4.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index bc051db..f63a183 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,34 +7,34 @@ objects = { /* Begin PBXBuildFile section */ - 0D50F66ABC6518DE36B3196DB0DE9E6A /* Reusable-tvOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 75D12EB6EB7D03D6170F9474FF9E9C29 /* Reusable-tvOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1E91B689800650761043A2A291CBAEE4 /* Reusable-tvOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EACBE9858B8CCA89BA7B0D0588B8E59 /* Reusable-tvOS-dummy.m */; }; - 27BA1A449804F55CA72025BAE0C9EB2D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41E121A3961E1BE3FAFE72CE5B480D1C /* Foundation.framework */; }; - 3BBF976FD0B1250C4D416D26903500CE /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35266D3E6FE70D95B70C2A57CB9B3EC7 /* Reusable.swift */; }; - 407C48DB502F8EDE151D653A141BAD1A /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FF8B590C06A740F91C7372A2D35975 /* StoryboardBased.swift */; }; - 4752914F2DDED382D657467FA809B95A /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C5AE5121EE4B8AC2471F4174929160 /* UITableView+Reusable.swift */; }; - 5A8DA2F90A10CE404CBCBB02D399C776 /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35266D3E6FE70D95B70C2A57CB9B3EC7 /* Reusable.swift */; }; - 5AA7FB64915737BCA55DD63758BB9C3A /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88B4B672BE99576465A3933D81E49D7 /* StoryboardSceneBased.swift */; }; - 5B1AC453A9518D460E2D5CCCCE02AD94 /* Pods-ReusableDemo tvOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 04EEAFEB9FCE88251C3B21E7976F3F60 /* Pods-ReusableDemo tvOS-dummy.m */; }; - 6E593DC1C0EADFBF73DA399B30F90F70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA296B1A1D99FC572280360B9BE1A37F /* Foundation.framework */; }; - 7A354BE729D0DB32D52E45E12661D123 /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142289C96EF0D222BCE19E7AEA175148 /* UICollectionView+Reusable.swift */; }; - 7F6F4F643D5BA89A7B9D8E0AFFD1F9D6 /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C318532F93E2EB2C403AAD189976C5A1 /* NibOwnerLoadable.swift */; }; - 8735A73911F4E78E9DFDDE76A17AB8A0 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4630395F25207885528E5A948B73E8BC /* NibLoadable.swift */; }; - 9B7489ADAA048612932FD3F2A0A54B60 /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C5AE5121EE4B8AC2471F4174929160 /* UITableView+Reusable.swift */; }; - A57C224200A920D07677BB4F6C141B1D /* Pods-ReusableDemo tvOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C7B62C4BBC6DA547FB62B866E8508E4 /* Pods-ReusableDemo tvOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A5F29437F9CEE0B7E87DA98433BFF256 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA296B1A1D99FC572280360B9BE1A37F /* Foundation.framework */; }; - A7CAD374CA96A5F1C0A79F5C55ED5333 /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18FF8B590C06A740F91C7372A2D35975 /* StoryboardBased.swift */; }; - AE08887B5EBF48E646710D4846869AF5 /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142289C96EF0D222BCE19E7AEA175148 /* UICollectionView+Reusable.swift */; }; - B2A2C40AB81F69391C9B34B4C4C3D07E /* Reusable-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C198688D1903B02768DAD0EFD002A8F7 /* Reusable-iOS-dummy.m */; }; - B9BF5263A5DFA7FD3A016457BE2221CE /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = A88B4B672BE99576465A3933D81E49D7 /* StoryboardSceneBased.swift */; }; - BA0C37FE20350E90CDD94CFC350D0B4D /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C318532F93E2EB2C403AAD189976C5A1 /* NibOwnerLoadable.swift */; }; - BD496294138DD863E8721CAE3C5A8036 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41E121A3961E1BE3FAFE72CE5B480D1C /* Foundation.framework */; }; - CA19A96D9D3A8D816E1519D7A2DCDB17 /* Reusable-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 841B9CA6673AB32B2A99BABB01D5AF53 /* Reusable-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB4D8FF23AECE922B586AAB36B24A341 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4630395F25207885528E5A948B73E8BC /* NibLoadable.swift */; }; - DA07527C7BF1D6054521E8D6DE42AC69 /* Pods-ReusableDemo iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 869C17CB8106424ABC0857DDDF3D3991 /* Pods-ReusableDemo iOS-dummy.m */; }; - E758DA9749C715FADC0E161030F5B4E1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25E7ABE74A9EB02B9EA922E8EEBFBDD7 /* UIKit.framework */; }; - EECDFCD8138130433FDD9B9B7CABFDE8 /* Pods-ReusableDemo iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFAD266973AF1300B651914186E8436 /* Pods-ReusableDemo iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6AC5F1A6D09ED47B22BD5707D61EDEF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 651749039AA2EEC434FC875FD9A692C5 /* UIKit.framework */; }; + 0D50F66ABC6518DE36B3196DB0DE9E6A /* Reusable-tvOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5892AC97FA3ED1A5B9672D91235E50A0 /* Reusable-tvOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0F0A9279E709AD55A8E53014D6F5F6F3 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DA6C7AF483B806350229F9BB19F721F /* NibLoadable.swift */; }; + 129FE47BB206E616C754233326D37508 /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45834060175563CCF1CBCF063789FE /* UITableView+Reusable.swift */; }; + 1421E6B34CAAA924E4073BF3BDBFB6B1 /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62D264D4244F785EB7C4672C8F079E34 /* Reusable.swift */; }; + 2083A9113A47EE501C13CE19FD0CCA9F /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2252BDFE7D9DF619FDD525C082B88752 /* NibOwnerLoadable.swift */; }; + 27E1902F7E08A87517EF8F83800894CF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 922196E4B9A8DF0BA58D40DC605C2256 /* Foundation.framework */; }; + 28A3C22F69A13E1788A6F21F155557CF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DA112AA427940BC97DD07F2343064CB /* UIKit.framework */; }; + 2F9AA043CF861B6748E7C27ABCC92A07 /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8409AF22BF14FCADAFB835B8DA7539F9 /* UICollectionView+Reusable.swift */; }; + 3B8C417EAB4A1E2AB8394367DE63AE51 /* NibOwnerLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2252BDFE7D9DF619FDD525C082B88752 /* NibOwnerLoadable.swift */; }; + 3E01A23BC4F57DF65184619B12E6242C /* UICollectionView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8409AF22BF14FCADAFB835B8DA7539F9 /* UICollectionView+Reusable.swift */; }; + 48640F1825BACEBFD51B2C491870A7C6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E20176655E46B2857C74A77443AC4CAA /* Foundation.framework */; }; + 48E851079DE10FB7A4BFBE199DC566CE /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DA6C7AF483B806350229F9BB19F721F /* NibLoadable.swift */; }; + 4D237CC83DA84668A1CA632B889DE228 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2E8466DCD52BE65F107BAF60D975F28 /* StoryboardSceneBased.swift */; }; + 5B1AC453A9518D460E2D5CCCCE02AD94 /* Pods-ReusableDemo tvOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A0125520D5964A183DB0F135F5CCB36B /* Pods-ReusableDemo tvOS-dummy.m */; }; + 666E403055D64E10926F81C4808DD4B5 /* Reusable-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ED6979FA83E22940E9242F74ECAFF2A /* Reusable-iOS-dummy.m */; }; + 6C8F26E55BB63D01B89E1BA22E4A78C4 /* StoryboardSceneBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2E8466DCD52BE65F107BAF60D975F28 /* StoryboardSceneBased.swift */; }; + 826BA9C06F4BEF4545E5CE128F2FDC98 /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62D264D4244F785EB7C4672C8F079E34 /* Reusable.swift */; }; + 930ABB000514069736801218F8DF69E6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E20176655E46B2857C74A77443AC4CAA /* Foundation.framework */; }; + 9324DB77554A09B2BA30C6D7B2293FD7 /* UITableView+Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45834060175563CCF1CBCF063789FE /* UITableView+Reusable.swift */; }; + A0AD6BA45DAA12BCD17529C7CD7D2220 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD53A29D7CB7D64446A47AC6B25452DC /* UIKit.framework */; }; + A57C224200A920D07677BB4F6C141B1D /* Pods-ReusableDemo tvOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = ED66A027868D5B876E44283A1D2714D9 /* Pods-ReusableDemo tvOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ACBEBCAB8D8C779BDF2817B5FA498D62 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 922196E4B9A8DF0BA58D40DC605C2256 /* Foundation.framework */; }; + CA19A96D9D3A8D816E1519D7A2DCDB17 /* Reusable-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E51095A3435FC405B95D01CEB2E6761 /* Reusable-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA07527C7BF1D6054521E8D6DE42AC69 /* Pods-ReusableDemo iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 75BE09819782C98834791EFD9D29FF3B /* Pods-ReusableDemo iOS-dummy.m */; }; + DEBD7C4088BAAE6E26D32CACD10FC0E4 /* Reusable-tvOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE82B8602171E6BABE92B410B71A9845 /* Reusable-tvOS-dummy.m */; }; + E9F3894123AABC08738901141821D7F8 /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59FF06E4BEF0F7688B1F724EB17FA572 /* StoryboardBased.swift */; }; + EB976F5E22CEBFCC1E95243AB71AA8B5 /* StoryboardBased.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59FF06E4BEF0F7688B1F724EB17FA572 /* StoryboardBased.swift */; }; + EECDFCD8138130433FDD9B9B7CABFDE8 /* Pods-ReusableDemo iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CFBAD7716370FCF78377CC43259E2DB0 /* Pods-ReusableDemo iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -55,54 +55,57 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 04EEAFEB9FCE88251C3B21E7976F3F60 /* Pods-ReusableDemo tvOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReusableDemo tvOS-dummy.m"; sourceTree = ""; }; - 05D40A717DDEE1B1D1A9670005EC08EA /* Pods-ReusableDemo tvOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReusableDemo tvOS-acknowledgements.plist"; sourceTree = ""; }; - 142289C96EF0D222BCE19E7AEA175148 /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Reusable.swift"; sourceTree = ""; }; - 15A98C0AC4A508AF6304D7A25A5998FE /* Pods-ReusableDemo iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo iOS.release.xcconfig"; sourceTree = ""; }; - 18FF8B590C06A740F91C7372A2D35975 /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StoryboardBased.swift; sourceTree = ""; }; - 1F6BFE014A910FE2B127C6E56321EEBD /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable.framework; path = "Reusable-tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 22BBFD8D2C03A6CFCFFBE2048EEEF4EF /* Pods-ReusableDemo iOS-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo iOS-resources.sh"; sourceTree = ""; }; - 25E7ABE74A9EB02B9EA922E8EEBFBDD7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 2B6AEEE64F6526BC28A75560CF581EC2 /* Reusable-tvOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Reusable-tvOS-prefix.pch"; path = "../Reusable-tvOS/Reusable-tvOS-prefix.pch"; sourceTree = ""; }; - 2C7B62C4BBC6DA547FB62B866E8508E4 /* Pods-ReusableDemo tvOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReusableDemo tvOS-umbrella.h"; sourceTree = ""; }; - 2EACBE9858B8CCA89BA7B0D0588B8E59 /* Reusable-tvOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Reusable-tvOS-dummy.m"; path = "../Reusable-tvOS/Reusable-tvOS-dummy.m"; sourceTree = ""; }; - 2FBB526F3B51898558D88108C6998CF0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 35266D3E6FE70D95B70C2A57CB9B3EC7 /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Reusable.swift; sourceTree = ""; }; - 3B53D18B523A48D73608EEA860C2A9C7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Reusable-tvOS/Info.plist"; sourceTree = ""; }; - 3DD8BDE30EC2D15E3E7F252DD392488A /* Reusable-tvOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; name = "Reusable-tvOS.modulemap"; path = "../Reusable-tvOS/Reusable-tvOS.modulemap"; sourceTree = ""; }; - 41E121A3961E1BE3FAFE72CE5B480D1C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 44846D61CF9F9A53813938324892E093 /* Pods_ReusableDemo_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReusableDemo_tvOS.framework; path = "Pods-ReusableDemo tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4630395F25207885528E5A948B73E8BC /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NibLoadable.swift; sourceTree = ""; }; - 651749039AA2EEC434FC875FD9A692C5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 651A7020A6D6077CD50BF79F86D633D6 /* Reusable-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-iOS-prefix.pch"; sourceTree = ""; }; - 6CBFFFEECB9F1B7439D4C440C8F55BB9 /* Pods-ReusableDemo iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ReusableDemo iOS.modulemap"; sourceTree = ""; }; - 75D12EB6EB7D03D6170F9474FF9E9C29 /* Reusable-tvOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Reusable-tvOS-umbrella.h"; path = "../Reusable-tvOS/Reusable-tvOS-umbrella.h"; sourceTree = ""; }; - 841B9CA6673AB32B2A99BABB01D5AF53 /* Reusable-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-iOS-umbrella.h"; sourceTree = ""; }; - 869C17CB8106424ABC0857DDDF3D3991 /* Pods-ReusableDemo iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReusableDemo iOS-dummy.m"; sourceTree = ""; }; - 91823E26074469EDEBDDF3E9C28D9239 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 92A94FB4D7362FE9031A52CD84221532 /* Pods-ReusableDemo tvOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReusableDemo tvOS-acknowledgements.markdown"; sourceTree = ""; }; + 029963D2DD2C3E43DF26B9E6CFC4C77C /* Reusable-tvOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Reusable-tvOS-prefix.pch"; path = "../Reusable-tvOS/Reusable-tvOS-prefix.pch"; sourceTree = ""; }; + 032F07628656348BA344539DF2F3FDB2 /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable.framework; path = "Reusable-tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0FBD092B0B485DA6C7B90BE206901D63 /* Pods-ReusableDemo tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo tvOS.release.xcconfig"; sourceTree = ""; }; + 134568E37290F577BF1196CE3781E88A /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable.framework; path = "Reusable-iOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E9CB32CE05A90E5172D6D051DD06C14 /* Pods-ReusableDemo tvOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReusableDemo tvOS-acknowledgements.markdown"; sourceTree = ""; }; + 1ED6979FA83E22940E9242F74ECAFF2A /* Reusable-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-iOS-dummy.m"; sourceTree = ""; }; + 2252BDFE7D9DF619FDD525C082B88752 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibOwnerLoadable.swift; path = Sources/View/NibOwnerLoadable.swift; sourceTree = ""; }; + 29C11F4F52D757EB35D07F5DC9791C6F /* Pods-ReusableDemo iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo iOS.release.xcconfig"; sourceTree = ""; }; + 2B45834060175563CCF1CBCF063789FE /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITableView+Reusable.swift"; path = "Sources/View/UITableView+Reusable.swift"; sourceTree = ""; }; + 2BA094E6E5229706C00EDE32CAB5E92A /* Pods-ReusableDemo iOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReusableDemo iOS-acknowledgements.plist"; sourceTree = ""; }; + 43D8258D4DF4BF5F4CB09C272109F90B /* Pods-ReusableDemo iOS-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo iOS-frameworks.sh"; sourceTree = ""; }; + 44E83F8834E3FA0ABB1062EC79DA2B42 /* Reusable-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Reusable-iOS.xcconfig"; sourceTree = ""; }; + 47A3B86478DBAB5BE3C86FDCB5191334 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Reusable-tvOS/Info.plist"; sourceTree = ""; }; + 4BCFB47F4B54CC88F39873A8D5EDA076 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4DA6C7AF483B806350229F9BB19F721F /* NibLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NibLoadable.swift; path = Sources/View/NibLoadable.swift; sourceTree = ""; }; + 5870928F541485D99A0E70267E1705CF /* Pods-ReusableDemo tvOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReusableDemo tvOS-acknowledgements.plist"; sourceTree = ""; }; + 5892AC97FA3ED1A5B9672D91235E50A0 /* Reusable-tvOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Reusable-tvOS-umbrella.h"; path = "../Reusable-tvOS/Reusable-tvOS-umbrella.h"; sourceTree = ""; }; + 59FF06E4BEF0F7688B1F724EB17FA572 /* StoryboardBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardBased.swift; path = Sources/Storyboard/StoryboardBased.swift; sourceTree = ""; }; + 5B5B35512DA1A50AAFAE6CF87A634BF6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 60C791B4753934D6F226F344C203602E /* Pods_ReusableDemo_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReusableDemo_iOS.framework; path = "Pods-ReusableDemo iOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 62D264D4244F785EB7C4672C8F079E34 /* Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/View/Reusable.swift; sourceTree = ""; }; + 651C55EADF4A57B9F079395A27F61ABC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6C4EA458C8961A4156B23CF70C2F5D1A /* Pods-ReusableDemo tvOS-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo tvOS-frameworks.sh"; sourceTree = ""; }; + 6DA112AA427940BC97DD07F2343064CB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 75BE09819782C98834791EFD9D29FF3B /* Pods-ReusableDemo iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReusableDemo iOS-dummy.m"; sourceTree = ""; }; + 8409AF22BF14FCADAFB835B8DA7539F9 /* UICollectionView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UICollectionView+Reusable.swift"; path = "Sources/View/UICollectionView+Reusable.swift"; sourceTree = ""; }; + 8CF050962AB868C4567DD94B5A8051C1 /* Reusable.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Reusable.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 922196E4B9A8DF0BA58D40DC605C2256 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A6B7F198D9B2D532DD31804EA713DFBE /* Pods-ReusableDemo tvOS-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo tvOS-frameworks.sh"; sourceTree = ""; }; - A88B4B672BE99576465A3933D81E49D7 /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StoryboardSceneBased.swift; sourceTree = ""; }; - B5C5AE5121EE4B8AC2471F4174929160 /* UITableView+Reusable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UITableView+Reusable.swift"; sourceTree = ""; }; - B65BB1807FF9069EF505EFAFD7E99A76 /* Pods-ReusableDemo iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo iOS.debug.xcconfig"; sourceTree = ""; }; - B79535BA25489873572895A32ABD781E /* Reusable-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Reusable-iOS.xcconfig"; sourceTree = ""; }; - BA7274AD96986A5B3B8EA52D09AEE039 /* Reusable-tvOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Reusable-tvOS.xcconfig"; path = "../Reusable-tvOS/Reusable-tvOS.xcconfig"; sourceTree = ""; }; - C198688D1903B02768DAD0EFD002A8F7 /* Reusable-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Reusable-iOS-dummy.m"; sourceTree = ""; }; - C318532F93E2EB2C403AAD189976C5A1 /* NibOwnerLoadable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NibOwnerLoadable.swift; sourceTree = ""; }; - CD36569A36C6EAACC62BA0690D50890B /* Pods-ReusableDemo tvOS-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo tvOS-resources.sh"; sourceTree = ""; }; - D3FA486CC59C55802422B2B4D1A7EBD4 /* Pods_ReusableDemo_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReusableDemo_iOS.framework; path = "Pods-ReusableDemo iOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - D5E79BECA05F550EE3EB11A3AAC06D59 /* Reusable-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Reusable-iOS.modulemap"; sourceTree = ""; }; - DA296B1A1D99FC572280360B9BE1A37F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - DA6D2986FE3DFCEE26E3DF709FFBAA24 /* Pods-ReusableDemo iOS-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo iOS-frameworks.sh"; sourceTree = ""; }; - DAFAD266973AF1300B651914186E8436 /* Pods-ReusableDemo iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReusableDemo iOS-umbrella.h"; sourceTree = ""; }; - DB0C42BAA11BD2EE7E1F94055FDF76A1 /* Reusable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Reusable.framework; path = "Reusable-iOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - DF339DC415243911C5B7D5C2B64F08C1 /* Pods-ReusableDemo iOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReusableDemo iOS-acknowledgements.plist"; sourceTree = ""; }; - E1E4AA52419963274B5AF13A96D0D409 /* Pods-ReusableDemo tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo tvOS.release.xcconfig"; sourceTree = ""; }; - F0C5E356F3CD677ABA96982C8A524121 /* Pods-ReusableDemo iOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReusableDemo iOS-acknowledgements.markdown"; sourceTree = ""; }; - F0DAAC54FB5CF1219854E66695BE8D56 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F5E2E8BFA91516A784D5F5800B897199 /* Pods-ReusableDemo tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo tvOS.debug.xcconfig"; sourceTree = ""; }; - FD6CF5AD5C1480B61601C371B43A3389 /* Pods-ReusableDemo tvOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ReusableDemo tvOS.modulemap"; sourceTree = ""; }; + 961CF8EA017975C422786939C10D48DB /* Reusable-tvOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "Reusable-tvOS.modulemap"; path = "../Reusable-tvOS/Reusable-tvOS.modulemap"; sourceTree = ""; }; + 997B29124B8AD227F6B17CE7D11B0953 /* Reusable-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Reusable-iOS.modulemap"; sourceTree = ""; }; + 9E51095A3435FC405B95D01CEB2E6761 /* Reusable-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-iOS-umbrella.h"; sourceTree = ""; }; + A0125520D5964A183DB0F135F5CCB36B /* Pods-ReusableDemo tvOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReusableDemo tvOS-dummy.m"; sourceTree = ""; }; + A4320604AC844EEC563184E00C6E666A /* Reusable-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Reusable-iOS-prefix.pch"; sourceTree = ""; }; + A69E6E0917429EABB2E67A850BE7B0D1 /* Pods-ReusableDemo iOS-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo iOS-resources.sh"; sourceTree = ""; }; + A7C2B3468C3D50203D166A4A1ED7B942 /* Pods-ReusableDemo tvOS-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReusableDemo tvOS-resources.sh"; sourceTree = ""; }; + AE82B8602171E6BABE92B410B71A9845 /* Reusable-tvOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Reusable-tvOS-dummy.m"; path = "../Reusable-tvOS/Reusable-tvOS-dummy.m"; sourceTree = ""; }; + B1CFDD6662D2C3A0C8A0820E73F83CAE /* Reusable-tvOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Reusable-tvOS.xcconfig"; path = "../Reusable-tvOS/Reusable-tvOS.xcconfig"; sourceTree = ""; }; + B5BF75A452273EA6A6A89B70A499A650 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B8F436E7630A5B236CBEF9145E88B2E2 /* Pods-ReusableDemo iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo iOS.debug.xcconfig"; sourceTree = ""; }; + C40FFB95E0E48B6B19EF527718C6E15C /* Pods-ReusableDemo iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReusableDemo iOS.modulemap"; sourceTree = ""; }; + C9504196865F3C990C48E2735785DAAF /* Pods_ReusableDemo_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ReusableDemo_tvOS.framework; path = "Pods-ReusableDemo tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + CFBAD7716370FCF78377CC43259E2DB0 /* Pods-ReusableDemo iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReusableDemo iOS-umbrella.h"; sourceTree = ""; }; + D2E8466DCD52BE65F107BAF60D975F28 /* StoryboardSceneBased.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoryboardSceneBased.swift; path = Sources/Storyboard/StoryboardSceneBased.swift; sourceTree = ""; }; + D6364B0BC4181B760D63B01FE13EFA0B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + D906BF925BD4D3B3E32DC4FBFD28B217 /* Pods-ReusableDemo iOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReusableDemo iOS-acknowledgements.markdown"; sourceTree = ""; }; + DC0A06ABC80D9374C09CAC419E67EDB3 /* Pods-ReusableDemo tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReusableDemo tvOS.debug.xcconfig"; sourceTree = ""; }; + E20176655E46B2857C74A77443AC4CAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + ED66A027868D5B876E44283A1D2714D9 /* Pods-ReusableDemo tvOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReusableDemo tvOS-umbrella.h"; sourceTree = ""; }; + FA7176B1E7CAF3F0D0354F855029ADF8 /* Pods-ReusableDemo tvOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReusableDemo tvOS.modulemap"; sourceTree = ""; }; + FD53A29D7CB7D64446A47AC6B25452DC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -110,7 +113,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6E593DC1C0EADFBF73DA399B30F90F70 /* Foundation.framework in Frameworks */, + ACBEBCAB8D8C779BDF2817B5FA498D62 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -118,8 +121,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A5F29437F9CEE0B7E87DA98433BFF256 /* Foundation.framework in Frameworks */, - E758DA9749C715FADC0E161030F5B4E1 /* UIKit.framework in Frameworks */, + 27E1902F7E08A87517EF8F83800894CF /* Foundation.framework in Frameworks */, + 28A3C22F69A13E1788A6F21F155557CF /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -127,7 +130,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD496294138DD863E8721CAE3C5A8036 /* Foundation.framework in Frameworks */, + 930ABB000514069736801218F8DF69E6 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -135,96 +138,77 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 27BA1A449804F55CA72025BAE0C9EB2D /* Foundation.framework in Frameworks */, - F6AC5F1A6D09ED47B22BD5707D61EDEF /* UIKit.framework in Frameworks */, + 48640F1825BACEBFD51B2C491870A7C6 /* Foundation.framework in Frameworks */, + A0AD6BA45DAA12BCD17529C7CD7D2220 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 089A9B11852B69B1EDF45ABEA48B5E2F /* Support Files */ = { + 033F79925B3484F796628AE4A892616D /* Support Files */ = { isa = PBXGroup; children = ( - 3B53D18B523A48D73608EEA860C2A9C7 /* Info.plist */, - 91823E26074469EDEBDDF3E9C28D9239 /* Info.plist */, - D5E79BECA05F550EE3EB11A3AAC06D59 /* Reusable-iOS.modulemap */, - B79535BA25489873572895A32ABD781E /* Reusable-iOS.xcconfig */, - C198688D1903B02768DAD0EFD002A8F7 /* Reusable-iOS-dummy.m */, - 651A7020A6D6077CD50BF79F86D633D6 /* Reusable-iOS-prefix.pch */, - 841B9CA6673AB32B2A99BABB01D5AF53 /* Reusable-iOS-umbrella.h */, - 3DD8BDE30EC2D15E3E7F252DD392488A /* Reusable-tvOS.modulemap */, - BA7274AD96986A5B3B8EA52D09AEE039 /* Reusable-tvOS.xcconfig */, - 2EACBE9858B8CCA89BA7B0D0588B8E59 /* Reusable-tvOS-dummy.m */, - 2B6AEEE64F6526BC28A75560CF581EC2 /* Reusable-tvOS-prefix.pch */, - 75D12EB6EB7D03D6170F9474FF9E9C29 /* Reusable-tvOS-umbrella.h */, + 4BCFB47F4B54CC88F39873A8D5EDA076 /* Info.plist */, + 47A3B86478DBAB5BE3C86FDCB5191334 /* Info.plist */, + 997B29124B8AD227F6B17CE7D11B0953 /* Reusable-iOS.modulemap */, + 44E83F8834E3FA0ABB1062EC79DA2B42 /* Reusable-iOS.xcconfig */, + 1ED6979FA83E22940E9242F74ECAFF2A /* Reusable-iOS-dummy.m */, + A4320604AC844EEC563184E00C6E666A /* Reusable-iOS-prefix.pch */, + 9E51095A3435FC405B95D01CEB2E6761 /* Reusable-iOS-umbrella.h */, + 961CF8EA017975C422786939C10D48DB /* Reusable-tvOS.modulemap */, + B1CFDD6662D2C3A0C8A0820E73F83CAE /* Reusable-tvOS.xcconfig */, + AE82B8602171E6BABE92B410B71A9845 /* Reusable-tvOS-dummy.m */, + 029963D2DD2C3E43DF26B9E6CFC4C77C /* Reusable-tvOS-prefix.pch */, + 5892AC97FA3ED1A5B9672D91235E50A0 /* Reusable-tvOS-umbrella.h */, ); name = "Support Files"; path = "Example/Pods/Target Support Files/Reusable-iOS"; sourceTree = ""; }; - 0A6FA32961669211703A25986C3A1537 /* Reusable */ = { + 0BAC012DB5FFB1737A1296B9984829C5 /* View */ = { isa = PBXGroup; children = ( - DCEE9365B62732B6207D4A145C8B8291 /* Storyboard */, - 089A9B11852B69B1EDF45ABEA48B5E2F /* Support Files */, - E4E78CAA18195C51292D408EA0B579BB /* View */, + 4DA6C7AF483B806350229F9BB19F721F /* NibLoadable.swift */, + 2252BDFE7D9DF619FDD525C082B88752 /* NibOwnerLoadable.swift */, + 62D264D4244F785EB7C4672C8F079E34 /* Reusable.swift */, + 8409AF22BF14FCADAFB835B8DA7539F9 /* UICollectionView+Reusable.swift */, + 2B45834060175563CCF1CBCF063789FE /* UITableView+Reusable.swift */, ); - name = Reusable; - path = ../..; - sourceTree = ""; - }; - 1DE7536FD11B3AE7F914512BF716F97B /* Sources */ = { - isa = PBXGroup; - children = ( - 9B54B50B78BB08A1436B5AC129E7E1D0 /* View */, - ); - name = Sources; - path = Sources; - sourceTree = ""; - }; - 2681EB9079629E8036C84C105722BFE4 /* Sources */ = { - isa = PBXGroup; - children = ( - 30AEA6D34B7F8C618690BEFBA9C9B620 /* Storyboard */, - ); - name = Sources; - path = Sources; - sourceTree = ""; - }; - 27A8F071CF6D4A4BEEA42E86E8700C3E /* iOS */ = { - isa = PBXGroup; - children = ( - DA296B1A1D99FC572280360B9BE1A37F /* Foundation.framework */, - 25E7ABE74A9EB02B9EA922E8EEBFBDD7 /* UIKit.framework */, - ); - name = iOS; + name = View; sourceTree = ""; }; - 30AEA6D34B7F8C618690BEFBA9C9B620 /* Storyboard */ = { + 1F9F25156CFD25CE3B0FA840CF1933C3 /* Pods-ReusableDemo tvOS */ = { isa = PBXGroup; children = ( - 18FF8B590C06A740F91C7372A2D35975 /* StoryboardBased.swift */, - A88B4B672BE99576465A3933D81E49D7 /* StoryboardSceneBased.swift */, + 651C55EADF4A57B9F079395A27F61ABC /* Info.plist */, + FA7176B1E7CAF3F0D0354F855029ADF8 /* Pods-ReusableDemo tvOS.modulemap */, + 1E9CB32CE05A90E5172D6D051DD06C14 /* Pods-ReusableDemo tvOS-acknowledgements.markdown */, + 5870928F541485D99A0E70267E1705CF /* Pods-ReusableDemo tvOS-acknowledgements.plist */, + A0125520D5964A183DB0F135F5CCB36B /* Pods-ReusableDemo tvOS-dummy.m */, + 6C4EA458C8961A4156B23CF70C2F5D1A /* Pods-ReusableDemo tvOS-frameworks.sh */, + A7C2B3468C3D50203D166A4A1ED7B942 /* Pods-ReusableDemo tvOS-resources.sh */, + ED66A027868D5B876E44283A1D2714D9 /* Pods-ReusableDemo tvOS-umbrella.h */, + DC0A06ABC80D9374C09CAC419E67EDB3 /* Pods-ReusableDemo tvOS.debug.xcconfig */, + 0FBD092B0B485DA6C7B90BE206901D63 /* Pods-ReusableDemo tvOS.release.xcconfig */, ); - name = Storyboard; - path = Storyboard; + name = "Pods-ReusableDemo tvOS"; + path = "Target Support Files/Pods-ReusableDemo tvOS"; sourceTree = ""; }; - 4E1C6F507D7991E028ABB4AB267E0120 /* tvOS */ = { + 2FFA4CD93509B16BCE4460CFBD9A714F /* Development Pods */ = { isa = PBXGroup; children = ( - 41E121A3961E1BE3FAFE72CE5B480D1C /* Foundation.framework */, - 651749039AA2EEC434FC875FD9A692C5 /* UIKit.framework */, + A60616589268D4C5084302732C813CA3 /* Reusable */, ); - name = tvOS; + name = "Development Pods"; sourceTree = ""; }; 59C31FB22D8D4AE577BE54F5D34DA3FF /* Targets Support Files */ = { isa = PBXGroup; children = ( - 943D484E847749E85C95585B6B940C74 /* Pods-ReusableDemo iOS */, - B4CCDE30858CF86F35CADE9EFF391631 /* Pods-ReusableDemo tvOS */, + 9278BD42F5AB0D6F8A12B91F8851C70A /* Pods-ReusableDemo iOS */, + 1F9F25156CFD25CE3B0FA840CF1933C3 /* Pods-ReusableDemo tvOS */, ); name = "Targets Support Files"; sourceTree = ""; @@ -233,104 +217,98 @@ isa = PBXGroup; children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - F899D324B428483E0EB695D1EB18A585 /* Development Pods */, + 2FFA4CD93509B16BCE4460CFBD9A714F /* Development Pods */, 884D502095129379EF5BB132EEA4E18E /* Frameworks */, - E014DFCD0DF72E35BC2BC4D99CA7700C /* Products */, + 871252F530DF8772825A7F731A9A574D /* Products */, 59C31FB22D8D4AE577BE54F5D34DA3FF /* Targets Support Files */, ); sourceTree = ""; }; - 884D502095129379EF5BB132EEA4E18E /* Frameworks */ = { + 7DEA5E9346A457B4EF6B2E8FC611A3BD /* iOS */ = { isa = PBXGroup; children = ( - 27A8F071CF6D4A4BEEA42E86E8700C3E /* iOS */, - 4E1C6F507D7991E028ABB4AB267E0120 /* tvOS */, + 922196E4B9A8DF0BA58D40DC605C2256 /* Foundation.framework */, + 6DA112AA427940BC97DD07F2343064CB /* UIKit.framework */, ); - name = Frameworks; + name = iOS; sourceTree = ""; }; - 943D484E847749E85C95585B6B940C74 /* Pods-ReusableDemo iOS */ = { + 7E111FA90717C4FB801D90740C899B6C /* tvOS */ = { isa = PBXGroup; children = ( - F0DAAC54FB5CF1219854E66695BE8D56 /* Info.plist */, - 6CBFFFEECB9F1B7439D4C440C8F55BB9 /* Pods-ReusableDemo iOS.modulemap */, - F0C5E356F3CD677ABA96982C8A524121 /* Pods-ReusableDemo iOS-acknowledgements.markdown */, - DF339DC415243911C5B7D5C2B64F08C1 /* Pods-ReusableDemo iOS-acknowledgements.plist */, - 869C17CB8106424ABC0857DDDF3D3991 /* Pods-ReusableDemo iOS-dummy.m */, - DA6D2986FE3DFCEE26E3DF709FFBAA24 /* Pods-ReusableDemo iOS-frameworks.sh */, - 22BBFD8D2C03A6CFCFFBE2048EEEF4EF /* Pods-ReusableDemo iOS-resources.sh */, - DAFAD266973AF1300B651914186E8436 /* Pods-ReusableDemo iOS-umbrella.h */, - B65BB1807FF9069EF505EFAFD7E99A76 /* Pods-ReusableDemo iOS.debug.xcconfig */, - 15A98C0AC4A508AF6304D7A25A5998FE /* Pods-ReusableDemo iOS.release.xcconfig */, + E20176655E46B2857C74A77443AC4CAA /* Foundation.framework */, + FD53A29D7CB7D64446A47AC6B25452DC /* UIKit.framework */, ); - name = "Pods-ReusableDemo iOS"; - path = "Target Support Files/Pods-ReusableDemo iOS"; + name = tvOS; sourceTree = ""; }; - 9B54B50B78BB08A1436B5AC129E7E1D0 /* View */ = { + 871252F530DF8772825A7F731A9A574D /* Products */ = { isa = PBXGroup; children = ( - 4630395F25207885528E5A948B73E8BC /* NibLoadable.swift */, - C318532F93E2EB2C403AAD189976C5A1 /* NibOwnerLoadable.swift */, - 35266D3E6FE70D95B70C2A57CB9B3EC7 /* Reusable.swift */, - 142289C96EF0D222BCE19E7AEA175148 /* UICollectionView+Reusable.swift */, - B5C5AE5121EE4B8AC2471F4174929160 /* UITableView+Reusable.swift */, + 60C791B4753934D6F226F344C203602E /* Pods_ReusableDemo_iOS.framework */, + C9504196865F3C990C48E2735785DAAF /* Pods_ReusableDemo_tvOS.framework */, + 134568E37290F577BF1196CE3781E88A /* Reusable.framework */, + 032F07628656348BA344539DF2F3FDB2 /* Reusable.framework */, ); - name = View; - path = View; + name = Products; sourceTree = ""; }; - B4CCDE30858CF86F35CADE9EFF391631 /* Pods-ReusableDemo tvOS */ = { + 884D502095129379EF5BB132EEA4E18E /* Frameworks */ = { isa = PBXGroup; children = ( - 2FBB526F3B51898558D88108C6998CF0 /* Info.plist */, - FD6CF5AD5C1480B61601C371B43A3389 /* Pods-ReusableDemo tvOS.modulemap */, - 92A94FB4D7362FE9031A52CD84221532 /* Pods-ReusableDemo tvOS-acknowledgements.markdown */, - 05D40A717DDEE1B1D1A9670005EC08EA /* Pods-ReusableDemo tvOS-acknowledgements.plist */, - 04EEAFEB9FCE88251C3B21E7976F3F60 /* Pods-ReusableDemo tvOS-dummy.m */, - A6B7F198D9B2D532DD31804EA713DFBE /* Pods-ReusableDemo tvOS-frameworks.sh */, - CD36569A36C6EAACC62BA0690D50890B /* Pods-ReusableDemo tvOS-resources.sh */, - 2C7B62C4BBC6DA547FB62B866E8508E4 /* Pods-ReusableDemo tvOS-umbrella.h */, - F5E2E8BFA91516A784D5F5800B897199 /* Pods-ReusableDemo tvOS.debug.xcconfig */, - E1E4AA52419963274B5AF13A96D0D409 /* Pods-ReusableDemo tvOS.release.xcconfig */, + 7DEA5E9346A457B4EF6B2E8FC611A3BD /* iOS */, + 7E111FA90717C4FB801D90740C899B6C /* tvOS */, ); - name = "Pods-ReusableDemo tvOS"; - path = "Target Support Files/Pods-ReusableDemo tvOS"; + name = Frameworks; sourceTree = ""; }; - DCEE9365B62732B6207D4A145C8B8291 /* Storyboard */ = { + 9278BD42F5AB0D6F8A12B91F8851C70A /* Pods-ReusableDemo iOS */ = { isa = PBXGroup; children = ( - 2681EB9079629E8036C84C105722BFE4 /* Sources */, + B5BF75A452273EA6A6A89B70A499A650 /* Info.plist */, + C40FFB95E0E48B6B19EF527718C6E15C /* Pods-ReusableDemo iOS.modulemap */, + D906BF925BD4D3B3E32DC4FBFD28B217 /* Pods-ReusableDemo iOS-acknowledgements.markdown */, + 2BA094E6E5229706C00EDE32CAB5E92A /* Pods-ReusableDemo iOS-acknowledgements.plist */, + 75BE09819782C98834791EFD9D29FF3B /* Pods-ReusableDemo iOS-dummy.m */, + 43D8258D4DF4BF5F4CB09C272109F90B /* Pods-ReusableDemo iOS-frameworks.sh */, + A69E6E0917429EABB2E67A850BE7B0D1 /* Pods-ReusableDemo iOS-resources.sh */, + CFBAD7716370FCF78377CC43259E2DB0 /* Pods-ReusableDemo iOS-umbrella.h */, + B8F436E7630A5B236CBEF9145E88B2E2 /* Pods-ReusableDemo iOS.debug.xcconfig */, + 29C11F4F52D757EB35D07F5DC9791C6F /* Pods-ReusableDemo iOS.release.xcconfig */, ); - name = Storyboard; + name = "Pods-ReusableDemo iOS"; + path = "Target Support Files/Pods-ReusableDemo iOS"; sourceTree = ""; }; - E014DFCD0DF72E35BC2BC4D99CA7700C /* Products */ = { + A60616589268D4C5084302732C813CA3 /* Reusable */ = { isa = PBXGroup; children = ( - D3FA486CC59C55802422B2B4D1A7EBD4 /* Pods_ReusableDemo_iOS.framework */, - 44846D61CF9F9A53813938324892E093 /* Pods_ReusableDemo_tvOS.framework */, - 1F6BFE014A910FE2B127C6E56321EEBD /* Reusable.framework */, - DB0C42BAA11BD2EE7E1F94055FDF76A1 /* Reusable.framework */, + EFDADDE4DA08FB2B6B338A17C0A877CF /* Pod */, + C0FC1356AD64E534C4D8A9B429E6946A /* Storyboard */, + 033F79925B3484F796628AE4A892616D /* Support Files */, + 0BAC012DB5FFB1737A1296B9984829C5 /* View */, ); - name = Products; + name = Reusable; + path = ../..; sourceTree = ""; }; - E4E78CAA18195C51292D408EA0B579BB /* View */ = { + C0FC1356AD64E534C4D8A9B429E6946A /* Storyboard */ = { isa = PBXGroup; children = ( - 1DE7536FD11B3AE7F914512BF716F97B /* Sources */, + 59FF06E4BEF0F7688B1F724EB17FA572 /* StoryboardBased.swift */, + D2E8466DCD52BE65F107BAF60D975F28 /* StoryboardSceneBased.swift */, ); - name = View; + name = Storyboard; sourceTree = ""; }; - F899D324B428483E0EB695D1EB18A585 /* Development Pods */ = { + EFDADDE4DA08FB2B6B338A17C0A877CF /* Pod */ = { isa = PBXGroup; children = ( - 0A6FA32961669211703A25986C3A1537 /* Reusable */, + 5B5B35512DA1A50AAFAE6CF87A634BF6 /* LICENSE */, + D6364B0BC4181B760D63B01FE13EFA0B /* README.md */, + 8CF050962AB868C4567DD94B5A8051C1 /* Reusable.podspec */, ); - name = "Development Pods"; + name = Pod; sourceTree = ""; }; /* End PBXGroup section */ @@ -375,7 +353,7 @@ isa = PBXNativeTarget; buildConfigurationList = 21832EA06AA28CDAF652BA218D032D7F /* Build configuration list for PBXNativeTarget "Reusable-iOS" */; buildPhases = ( - A96E9A6F67AA4432A7D4485C70999CAA /* Sources */, + 0E4E5B8D3BFBC0A598DB6984FA013F90 /* Sources */, AF19C59E452CB38B0363B82DB017D4AC /* Frameworks */, 2DF6DE2D1D7A4A9C620BC3C6774D8407 /* Headers */, ); @@ -385,7 +363,7 @@ ); name = "Reusable-iOS"; productName = "Reusable-iOS"; - productReference = DB0C42BAA11BD2EE7E1F94055FDF76A1 /* Reusable.framework */; + productReference = 134568E37290F577BF1196CE3781E88A /* Reusable.framework */; productType = "com.apple.product-type.framework"; }; 4C8759C9E9BD492E6BAD26FC0085E1AA /* Pods-ReusableDemo iOS */ = { @@ -403,7 +381,7 @@ ); name = "Pods-ReusableDemo iOS"; productName = "Pods-ReusableDemo iOS"; - productReference = D3FA486CC59C55802422B2B4D1A7EBD4 /* Pods_ReusableDemo_iOS.framework */; + productReference = 60C791B4753934D6F226F344C203602E /* Pods_ReusableDemo_iOS.framework */; productType = "com.apple.product-type.framework"; }; E87C6A21CD64B0D8E57A125BDC40E748 /* Pods-ReusableDemo tvOS */ = { @@ -421,14 +399,14 @@ ); name = "Pods-ReusableDemo tvOS"; productName = "Pods-ReusableDemo tvOS"; - productReference = 44846D61CF9F9A53813938324892E093 /* Pods_ReusableDemo_tvOS.framework */; + productReference = C9504196865F3C990C48E2735785DAAF /* Pods_ReusableDemo_tvOS.framework */; productType = "com.apple.product-type.framework"; }; EAED9B55F722056245224080A1E5BA22 /* Reusable-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 828AA83E71FEE27BB8B07F1E83AEFE44 /* Build configuration list for PBXNativeTarget "Reusable-tvOS" */; buildPhases = ( - 17558438719B27E5FC130146E67113C2 /* Sources */, + 898936A739C2C5EF22524E53774E3514 /* Sources */, FC91EEABE7845DB7DC78D9DC10C9EE1E /* Frameworks */, 0834DFF72D26F8B2E80AA9680B3A231C /* Headers */, ); @@ -438,7 +416,7 @@ ); name = "Reusable-tvOS"; productName = "Reusable-tvOS"; - productReference = 1F6BFE014A910FE2B127C6E56321EEBD /* Reusable.framework */; + productReference = 032F07628656348BA344539DF2F3FDB2 /* Reusable.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -447,8 +425,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -458,7 +436,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = E014DFCD0DF72E35BC2BC4D99CA7700C /* Products */; + productRefGroup = 871252F530DF8772825A7F731A9A574D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -471,41 +449,41 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 17558438719B27E5FC130146E67113C2 /* Sources */ = { + 0E4E5B8D3BFBC0A598DB6984FA013F90 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8735A73911F4E78E9DFDDE76A17AB8A0 /* NibLoadable.swift in Sources */, - BA0C37FE20350E90CDD94CFC350D0B4D /* NibOwnerLoadable.swift in Sources */, - 1E91B689800650761043A2A291CBAEE4 /* Reusable-tvOS-dummy.m in Sources */, - 5A8DA2F90A10CE404CBCBB02D399C776 /* Reusable.swift in Sources */, - A7CAD374CA96A5F1C0A79F5C55ED5333 /* StoryboardBased.swift in Sources */, - B9BF5263A5DFA7FD3A016457BE2221CE /* StoryboardSceneBased.swift in Sources */, - AE08887B5EBF48E646710D4846869AF5 /* UICollectionView+Reusable.swift in Sources */, - 9B7489ADAA048612932FD3F2A0A54B60 /* UITableView+Reusable.swift in Sources */, + 0F0A9279E709AD55A8E53014D6F5F6F3 /* NibLoadable.swift in Sources */, + 2083A9113A47EE501C13CE19FD0CCA9F /* NibOwnerLoadable.swift in Sources */, + 666E403055D64E10926F81C4808DD4B5 /* Reusable-iOS-dummy.m in Sources */, + 826BA9C06F4BEF4545E5CE128F2FDC98 /* Reusable.swift in Sources */, + E9F3894123AABC08738901141821D7F8 /* StoryboardBased.swift in Sources */, + 6C8F26E55BB63D01B89E1BA22E4A78C4 /* StoryboardSceneBased.swift in Sources */, + 2F9AA043CF861B6748E7C27ABCC92A07 /* UICollectionView+Reusable.swift in Sources */, + 129FE47BB206E616C754233326D37508 /* UITableView+Reusable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9D45CC28473AFE5FF21D25D8458B1793 /* Sources */ = { + 898936A739C2C5EF22524E53774E3514 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5B1AC453A9518D460E2D5CCCCE02AD94 /* Pods-ReusableDemo tvOS-dummy.m in Sources */, + 48E851079DE10FB7A4BFBE199DC566CE /* NibLoadable.swift in Sources */, + 3B8C417EAB4A1E2AB8394367DE63AE51 /* NibOwnerLoadable.swift in Sources */, + DEBD7C4088BAAE6E26D32CACD10FC0E4 /* Reusable-tvOS-dummy.m in Sources */, + 1421E6B34CAAA924E4073BF3BDBFB6B1 /* Reusable.swift in Sources */, + EB976F5E22CEBFCC1E95243AB71AA8B5 /* StoryboardBased.swift in Sources */, + 4D237CC83DA84668A1CA632B889DE228 /* StoryboardSceneBased.swift in Sources */, + 3E01A23BC4F57DF65184619B12E6242C /* UICollectionView+Reusable.swift in Sources */, + 9324DB77554A09B2BA30C6D7B2293FD7 /* UITableView+Reusable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A96E9A6F67AA4432A7D4485C70999CAA /* Sources */ = { + 9D45CC28473AFE5FF21D25D8458B1793 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CB4D8FF23AECE922B586AAB36B24A341 /* NibLoadable.swift in Sources */, - 7F6F4F643D5BA89A7B9D8E0AFFD1F9D6 /* NibOwnerLoadable.swift in Sources */, - B2A2C40AB81F69391C9B34B4C4C3D07E /* Reusable-iOS-dummy.m in Sources */, - 3BBF976FD0B1250C4D416D26903500CE /* Reusable.swift in Sources */, - 407C48DB502F8EDE151D653A141BAD1A /* StoryboardBased.swift in Sources */, - 5AA7FB64915737BCA55DD63758BB9C3A /* StoryboardSceneBased.swift in Sources */, - 7A354BE729D0DB32D52E45E12661D123 /* UICollectionView+Reusable.swift in Sources */, - 4752914F2DDED382D657467FA809B95A /* UITableView+Reusable.swift in Sources */, + 5B1AC453A9518D460E2D5CCCCE02AD94 /* Pods-ReusableDemo tvOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -535,363 +513,390 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 088CC129E7C00775C36B08AE27E3B691 /* Release */ = { + 0A32677772F4BE57B2318A540D74EE9C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15A98C0AC4A508AF6304D7A25A5998FE /* Pods-ReusableDemo iOS.release.xcconfig */; + baseConfigurationReference = 0FBD092B0B485DA6C7B90BE206901D63 /* Pods-ReusableDemo tvOS.release.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo iOS/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ReusableDemo_iOS; - SDKROOT = iphoneos; + PRODUCT_NAME = Pods_ReusableDemo_tvOS; + SDKROOT = appletvos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 1735BE8149FCC90BFD19466879352EE0 /* Release */ = { + 1B40878468399AE13175C34816E5E23C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BA7274AD96986A5B3B8EA52D09AEE039 /* Reusable-tvOS.xcconfig */; + baseConfigurationReference = B1CFDD6662D2C3A0C8A0820E73F83CAE /* Reusable-tvOS.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/Reusable-tvOS/Reusable-tvOS-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Reusable-tvOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/Reusable-tvOS/Reusable-tvOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = Reusable; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.0; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 1F010146A4AA8E40B8D54A31D066186F /* Release */ = { + 2219ADC78F944A98D2AF9E0A7B3D44B2 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; TVOS_DEPLOYMENT_TARGET = 9.0; - VALIDATE_PRODUCT = YES; }; name = Release; }; - 3878161F20CC086D99C5ACBB88F796DC /* Debug */ = { + 5FA9E513B6C50A547DFB9635B29268DC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B65BB1807FF9069EF505EFAFD7E99A76 /* Pods-ReusableDemo iOS.debug.xcconfig */; + baseConfigurationReference = B1CFDD6662D2C3A0C8A0820E73F83CAE /* Reusable-tvOS.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo iOS/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Reusable-tvOS/Reusable-tvOS-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Reusable-tvOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ReusableDemo_iOS; - SDKROOT = iphoneos; + MODULEMAP_FILE = "Target Support Files/Reusable-tvOS/Reusable-tvOS.modulemap"; + PRODUCT_NAME = Reusable; + SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 50B6D135946AB3144E32C6D68E15030A /* Release */ = { + 8E59803BFF81008B12116EFE1AA82EB2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B79535BA25489873572895A32ABD781E /* Reusable-iOS.xcconfig */; + baseConfigurationReference = DC0A06ABC80D9374C09CAC419E67EDB3 /* Pods-ReusableDemo tvOS.debug.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Reusable-iOS/Reusable-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Reusable-iOS/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Reusable-iOS/Reusable-iOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Reusable; - SDKROOT = iphoneos; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_ReusableDemo_tvOS; + SDKROOT = appletvos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - 69F8960444932D5152AB483681B4971C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - TVOS_DEPLOYMENT_TARGET = 9.0; - }; name = Debug; }; - 93302DD357F67BF585F50A1E08CE5C90 /* Debug */ = { + 9C52E5F5940CDCBC5DBDC9B6897B1CCF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BA7274AD96986A5B3B8EA52D09AEE039 /* Reusable-tvOS.xcconfig */; + baseConfigurationReference = 29C11F4F52D757EB35D07F5DC9791C6F /* Pods-ReusableDemo iOS.release.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/Reusable-tvOS/Reusable-tvOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Reusable-tvOS/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo iOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Reusable-tvOS/Reusable-tvOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Reusable; - SDKROOT = appletvos; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_ReusableDemo_iOS; + SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 9B795043522B99D003407C4806EA24D9 /* Debug */ = { + CF3904B256159B37507FCEE062818AF6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B79535BA25489873572895A32ABD781E /* Reusable-iOS.xcconfig */; + baseConfigurationReference = 44E83F8834E3FA0ABB1062EC79DA2B42 /* Reusable-iOS.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/Reusable-iOS/Reusable-iOS-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Reusable-iOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/Reusable-iOS/Reusable-iOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_NAME = Reusable; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 9ECA6CCAB03676DD9AF5884170BB0645 /* Debug */ = { + CFB815F9CF9439A04A37D50D58CEB567 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F5E2E8BFA91516A784D5F5800B897199 /* Pods-ReusableDemo tvOS.debug.xcconfig */; + baseConfigurationReference = B8F436E7630A5B236CBEF9145E88B2E2 /* Pods-ReusableDemo iOS.debug.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo iOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ReusableDemo_tvOS; - SDKROOT = appletvos; + PRODUCT_NAME = Pods_ReusableDemo_iOS; + SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - F05A27B6095CF2291F9B2F5E29ADFC35 /* Release */ = { + D0D3265008A1D1A824023D2F13889E05 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E1E4AA52419963274B5AF13A96D0D409 /* Pods-ReusableDemo tvOS.release.xcconfig */; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SYMROOT = "${SRCROOT}/../build"; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + F7AE44E51A3E12AC1CECFBB5F1545B4D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44E83F8834E3FA0ABB1062EC79DA2B42 /* Reusable-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Reusable-iOS/Reusable-iOS-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Reusable-iOS/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_ReusableDemo_tvOS; - SDKROOT = appletvos; + MODULEMAP_FILE = "Target Support Files/Reusable-iOS/Reusable-iOS.modulemap"; + PRODUCT_NAME = Reusable; + SDKROOT = iphoneos; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ @@ -899,8 +904,8 @@ 21832EA06AA28CDAF652BA218D032D7F /* Build configuration list for PBXNativeTarget "Reusable-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9B795043522B99D003407C4806EA24D9 /* Debug */, - 50B6D135946AB3144E32C6D68E15030A /* Release */, + F7AE44E51A3E12AC1CECFBB5F1545B4D /* Debug */, + CF3904B256159B37507FCEE062818AF6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -908,8 +913,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 69F8960444932D5152AB483681B4971C /* Debug */, - 1F010146A4AA8E40B8D54A31D066186F /* Release */, + D0D3265008A1D1A824023D2F13889E05 /* Debug */, + 2219ADC78F944A98D2AF9E0A7B3D44B2 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -917,8 +922,8 @@ 828AA83E71FEE27BB8B07F1E83AEFE44 /* Build configuration list for PBXNativeTarget "Reusable-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 93302DD357F67BF585F50A1E08CE5C90 /* Debug */, - 1735BE8149FCC90BFD19466879352EE0 /* Release */, + 5FA9E513B6C50A547DFB9635B29268DC /* Debug */, + 1B40878468399AE13175C34816E5E23C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -926,8 +931,8 @@ CCCA42745635D86BD0DDA6B955CA7456 /* Build configuration list for PBXNativeTarget "Pods-ReusableDemo iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3878161F20CC086D99C5ACBB88F796DC /* Debug */, - 088CC129E7C00775C36B08AE27E3B691 /* Release */, + CFB815F9CF9439A04A37D50D58CEB567 /* Debug */, + 9C52E5F5940CDCBC5DBDC9B6897B1CCF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -935,8 +940,8 @@ DAB8157305C88575C497C76A784CEA3A /* Build configuration list for PBXNativeTarget "Pods-ReusableDemo tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9ECA6CCAB03676DD9AF5884170BB0645 /* Debug */, - F05A27B6095CF2291F9B2F5E29ADFC35 /* Release */, + 8E59803BFF81008B12116EFE1AA82EB2 /* Debug */, + 0A32677772F4BE57B2318A540D74EE9C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-iOS.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-iOS.xcscheme index e67992e..23c13a5 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-iOS.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-iOS.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-tvOS.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-tvOS.xcscheme index 4f14c3f..a246979 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-tvOS.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Reusable-tvOS.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-frameworks.sh b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-frameworks.sh index 9f0217e..6a4ffd2 100755 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-frameworks.sh @@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +31,9 @@ install_framework() source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,6 +62,34 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + 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}\"" + 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}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + 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}\"" + 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}" + else + # 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. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + # Signs a framework with the provided identity code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then @@ -72,11 +108,19 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -85,14 +129,15 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/Reusable-iOS/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Reusable-iOS/Reusable.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/Reusable-iOS/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Reusable-iOS/Reusable.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-resources.sh b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-resources.sh index 4602c68..a7df440 100755 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-resources.sh +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-resources.sh @@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + case "${TARGETED_DEVICE_FAMILY}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" @@ -21,6 +25,9 @@ case "${TARGETED_DEVICE_FAMILY}" in 3) TARGET_DEVICE_ARGS="--target-device tv" ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -41,29 +48,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - 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}" + 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 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} ;; *.xib) - 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}" + 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 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} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -71,7 +78,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.debug.xcconfig index 6b47376..ab30834 100644 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.debug.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Reusable-iOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-iOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable-iOS/Reusable.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-iOS/Reusable.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Reusable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.release.xcconfig b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.release.xcconfig index 6b47376..ab30834 100644 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS.release.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Reusable-iOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-iOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable-iOS/Reusable.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-iOS/Reusable.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Reusable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Info.plist b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Info.plist index e4c7663..2243fe6 100644 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Info.plist +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Info.plist @@ -22,9 +22,5 @@ ${CURRENT_PROJECT_VERSION} NSPrincipalClass - UIRequiredDeviceCapabilities - - arm64 - diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-frameworks.sh b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-frameworks.sh index cc05538..71e3150 100755 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-frameworks.sh @@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +31,9 @@ install_framework() source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,6 +62,34 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + 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}\"" + 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}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + 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}\"" + 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}" + else + # 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. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + # Signs a framework with the provided identity code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then @@ -72,11 +108,19 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -85,14 +129,15 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/Reusable-tvOS/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Reusable-tvOS/Reusable.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/Reusable-tvOS/Reusable.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Reusable-tvOS/Reusable.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-resources.sh b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-resources.sh index 4602c68..a7df440 100755 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-resources.sh +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-resources.sh @@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + case "${TARGETED_DEVICE_FAMILY}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" @@ -21,6 +25,9 @@ case "${TARGETED_DEVICE_FAMILY}" in 3) TARGET_DEVICE_ARGS="--target-device tv" ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -41,29 +48,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - 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}" + 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 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} ;; *.xib) - 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}" + 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 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} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -71,7 +78,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.debug.xcconfig index 7adb3b8..a7c28ec 100644 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.debug.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Reusable-tvOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-tvOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable-tvOS/Reusable.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-tvOS/Reusable.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Reusable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.release.xcconfig b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.release.xcconfig index 7adb3b8..a7c28ec 100644 --- a/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS.release.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/Reusable-tvOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-tvOS" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/Reusable-tvOS/Reusable.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Reusable-tvOS/Reusable.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "Reusable" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Reusable-iOS/Reusable-iOS.xcconfig b/Example/Pods/Target Support Files/Reusable-iOS/Reusable-iOS.xcconfig index 186d798..f80f61d 100644 --- a/Example/Pods/Target Support Files/Reusable-iOS/Reusable-iOS.xcconfig +++ b/Example/Pods/Target Support Files/Reusable-iOS/Reusable-iOS.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Reusable-iOS +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Reusable-iOS GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/Pods/Target Support Files/Reusable-tvOS/Info.plist b/Example/Pods/Target Support Files/Reusable-tvOS/Info.plist index 2e65d20..b672cd7 100644 --- a/Example/Pods/Target Support Files/Reusable-tvOS/Info.plist +++ b/Example/Pods/Target Support Files/Reusable-tvOS/Info.plist @@ -22,9 +22,5 @@ ${CURRENT_PROJECT_VERSION} NSPrincipalClass - UIRequiredDeviceCapabilities - - arm64 - diff --git a/Example/Pods/Target Support Files/Reusable-tvOS/Reusable-tvOS.xcconfig b/Example/Pods/Target Support Files/Reusable-tvOS/Reusable-tvOS.xcconfig index b349c83..2e7e587 100644 --- a/Example/Pods/Target Support Files/Reusable-tvOS/Reusable-tvOS.xcconfig +++ b/Example/Pods/Target Support Files/Reusable-tvOS/Reusable-tvOS.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/Reusable-tvOS +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Reusable-tvOS GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/ReusableDemo.xcodeproj/project.pbxproj b/Example/ReusableDemo.xcodeproj/project.pbxproj index 9aafabc..7e23240 100644 --- a/Example/ReusableDemo.xcodeproj/project.pbxproj +++ b/Example/ReusableDemo.xcodeproj/project.pbxproj @@ -302,12 +302,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0820; + LastUpgradeCheck = 0920; ORGANIZATIONNAME = AliSoftware; TargetAttributes = { 09B346081C4ED26F00BA041F = { CreatedOnToolsVersion = 7.2; - LastSwiftMigration = 0810; + LastSwiftMigration = 0920; }; 37E3FC6B1E55CDD8000A7436 = { CreatedOnToolsVersion = 8.2; @@ -403,13 +403,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ReusableDemo iOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../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"; + 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"; showEnvVarsInLog = 0; }; 925AAB76FDDE3B5F2C79DCA4 /* [CP] Check Pods Manifest.lock */ = { @@ -418,13 +421,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ReusableDemo tvOS-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../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"; + 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"; showEnvVarsInLog = 0; }; B74A5D9CF37846C09D87FA1B /* [CP] Copy Pods Resources */ = { @@ -448,9 +454,12 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-ReusableDemo iOS/Pods-ReusableDemo iOS-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Reusable-iOS/Reusable.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reusable.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -463,9 +472,12 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-ReusableDemo tvOS/Pods-ReusableDemo tvOS-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Reusable-tvOS/Reusable.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reusable.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -545,14 +557,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -593,14 +611,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -636,7 +660,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.alisoftware.ReusableDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -650,7 +675,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.alisoftware.ReusableDemo; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo iOS.xcscheme b/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo iOS.xcscheme index 8a27405..8a96f1d 100644 --- a/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo iOS.xcscheme +++ b/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo iOS.xcscheme @@ -1,6 +1,6 @@ @@ -45,6 +46,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo tvOS.xcscheme b/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo tvOS.xcscheme index 727923c..4cf2e19 100644 --- a/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo tvOS.xcscheme +++ b/Example/ReusableDemo.xcodeproj/xcshareddata/xcschemes/ReusableDemo tvOS.xcscheme @@ -1,6 +1,6 @@ @@ -45,6 +46,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From 1bfa8bf7307095cdaa6d169c79db2d49b483d6f6 Mon Sep 17 00:00:00 2001 From: Andrey Yastrebov Date: Tue, 13 Mar 2018 19:59:05 +0300 Subject: [PATCH 2/5] - update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4707b6..e293c88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Master +* Update project to support Swift 4. + [@AYastrebov](https://github.com/AYastrebov) + [#42](https://github.com/AliSoftware/Reusable/pull/54) + * Fix typo in StoryboardBased examples. [@danshevluk](https://github.com/danshevluk) [#42](https://github.com/AliSoftware/Reusable/pull/42) From 9497b17f76c0007187c89c96d09beeb6af334ac1 Mon Sep 17 00:00:00 2001 From: Andrey Yastrebov Date: Tue, 13 Mar 2018 20:03:01 +0300 Subject: [PATCH 3/5] - update readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f845401..dd14f5b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ A Swift mixin to use `UITableViewCells`, `UICollectionViewCells` and `UIViewCont [![CircleCI](https://circleci.com/gh/AliSoftware/Reusable/tree/master.svg?style=svg)](https://circleci.com/gh/AliSoftware/Reusable/tree/master) [![Platform](http://cocoapod-badges.herokuapp.com/p/Reusable/badge.png)](http://cocoadocs.org/docsets/Reusable) [![Version](http://cocoapod-badges.herokuapp.com/v/Reusable/badge.png)](http://cocoadocs.org/docsets/Reusable) -[![Language: Swift 3.0](https://img.shields.io/badge/Swift-3.0-orange.svg)](https://swift.org) +[![Language: Swift 3 & 4](https://img.shields.io/badge/Swift-3%20%26%204-orange.svg)](https://swift.org) # Requirements @@ -17,6 +17,7 @@ A Swift mixin to use `UITableViewCells`, `UICollectionViewCells` and `UIViewCont |----------------|--------------------| | 2.2 & 2.3 | 2.5.1 | | 3.0 | 3.0.0 + | +| 4.0 | 4.0.2 + | # Introduction From 64cb094ef9b52af97897b9e4731440918b47dc82 Mon Sep 17 00:00:00 2001 From: Andrey Yastrebov Date: Tue, 13 Mar 2018 20:05:18 +0300 Subject: [PATCH 4/5] - update podspec --- .swift-version | 2 +- Reusable.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.swift-version b/.swift-version index 9f55b2c..5186d07 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -3.0 +4.0 diff --git a/Reusable.podspec b/Reusable.podspec index 4f91764..9d985db 100644 --- a/Reusable.podspec +++ b/Reusable.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Reusable" - s.version = "4.0.1" + s.version = "4.0.2" s.summary = "A Swift Mixin to deal with reusable UITableView & UICollectionView cells and XIB-based views" s.description = <<-DESC From 34d102cfce3b4d0de983ab44e46d143741a96020 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 15 Mar 2018 15:35:38 +0100 Subject: [PATCH 5/5] Nitpicking in README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd14f5b..166f6b5 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,11 @@ A Swift mixin to use `UITableViewCells`, `UICollectionViewCells` and `UIViewCont | Swift Version | Reusable Version | |----------------|--------------------| | 2.2 & 2.3 | 2.5.1 | -| 3.0 | 3.0.0 + | +| 3.0 (†) | 3.0.0 + | | 4.0 | 4.0.2 + | +_(†) The Reusable 3.0 code also compiles with Swift 4, you'll need 4.0.2+ only if you're using Carthage for integration_ + # Introduction This library aims to make it super-easy to create, dequeue and instantiate reusable views anywhere this pattern is used: from the obvious `UITableViewCell` and `UICollectionViewCell` to custom `UIViews`, even supporting `UIViewControllers` from Storyboards.