Преглед изворни кода

Use Sources and Tests directories.

Add a ReachabilityTests target that gets run as part of the Reachability scheme.

Add schemes to run all of the sample apps.

Clean up sample apps a little bit.
Hamilton Chapman пре 7 година
родитељ
комит
48cfd709a9

+ 164 - 23
Reachability.xcodeproj/project.pbxproj

@@ -11,23 +11,32 @@
 		00C54B241C09CF68001C3F12 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C54B231C09CF68001C3F12 /* ViewController.swift */; };
 		00C54B261C09CF68001C3F12 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 00C54B251C09CF68001C3F12 /* Assets.xcassets */; };
 		00C54B291C09CF68001C3F12 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 00C54B271C09CF68001C3F12 /* Main.storyboard */; };
+		335AD58E2052EA92000D4D08 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335AD5882052EA92000D4D08 /* Reachability.swift */; };
+		335AD58F2052EA92000D4D08 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 335AD5892052EA92000D4D08 /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		335AD5902052EA92000D4D08 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 335AD58A2052EA92000D4D08 /* Info.plist */; };
+		335AD5A22052EB32000D4D08 /* ReachabilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */; };
+		335AD5A52052EE07000D4D08 /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; };
 		57A45A041C197BE800384AE4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A45A031C197BE800384AE4 /* AppDelegate.swift */; };
 		57A45A061C197BE800384AE4 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A45A051C197BE800384AE4 /* ViewController.swift */; };
 		57A45A091C197BE800384AE4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 57A45A071C197BE800384AE4 /* Main.storyboard */; };
 		57A45A0B1C197BE800384AE4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 57A45A0A1C197BE800384AE4 /* Assets.xcassets */; };
-		AA7344761BE7678B008AFE69 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7344751BE7678B008AFE69 /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		AA7344931BE76820008AFE69 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344921BE76820008AFE69 /* AppDelegate.swift */; };
 		AA7344951BE76820008AFE69 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344941BE76820008AFE69 /* ViewController.swift */; };
 		AA7344981BE76820008AFE69 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA7344961BE76820008AFE69 /* Main.storyboard */; };
 		AA73449A1BE76820008AFE69 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA7344991BE76820008AFE69 /* Assets.xcassets */; };
-		AA7344B11BE76862008AFE69 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344B01BE76862008AFE69 /* Reachability.swift */; };
 		AA7344B51BE769D6008AFE69 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA7344B31BE769D6008AFE69 /* LaunchScreen.xib */; };
-		CA6187661F8D220200FD5234 /* CHANGELOG.md in Sources */ = {isa = PBXBuildFile; fileRef = CA6187651F8D220200FD5234 /* CHANGELOG.md */; };
 		CAC230C51BF2180000F6464E /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; };
 		CAC230C61BF2180000F6464E /* Reachability.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		335AD59D2052EB22000D4D08 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = AA7344691BE7678B008AFE69 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = AA7344711BE7678B008AFE69;
+			remoteInfo = Reachability;
+		};
 		CAC230C71BF2180000F6464E /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = AA7344691BE7678B008AFE69 /* Project object */;
@@ -78,6 +87,12 @@
 		00C54B251C09CF68001C3F12 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		00C54B281C09CF68001C3F12 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		00C54B2A1C09CF68001C3F12 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		335AD5882052EA92000D4D08 /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = "<group>"; };
+		335AD5892052EA92000D4D08 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
+		335AD58A2052EA92000D4D08 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReachabilityTests.swift; sourceTree = "<group>"; };
+		335AD58D2052EA92000D4D08 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReachabilityTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		57A45A011C197BE800384AE4 /* ReachabilityAppleTVSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReachabilityAppleTVSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		57A45A031C197BE800384AE4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		57A45A051C197BE800384AE4 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -85,15 +100,12 @@
 		57A45A0A1C197BE800384AE4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		57A45A0C1C197BE800384AE4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		AA7344721BE7678B008AFE69 /* Reachability.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Reachability.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		AA7344751BE7678B008AFE69 /* Reachability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
-		AA7344771BE7678B008AFE69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		AA7344901BE76820008AFE69 /* ReachabilitySample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReachabilitySample.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		AA7344921BE76820008AFE69 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		AA7344941BE76820008AFE69 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
 		AA7344971BE76820008AFE69 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		AA7344991BE76820008AFE69 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		AA73449E1BE76820008AFE69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		AA7344B01BE76862008AFE69 /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = "<group>"; };
 		AA7344B41BE769D6008AFE69 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
 		CA1983301F6FD0CD007D2DD1 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
 		CA6187601F8D21D700FD5234 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = "<group>"; };
@@ -110,6 +122,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		335AD5942052EB22000D4D08 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				335AD5A52052EE07000D4D08 /* Reachability.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		57A459FE1C197BE800384AE4 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -147,6 +167,32 @@
 			path = ReachabilityMacSample;
 			sourceTree = "<group>";
 		};
+		335AD5872052EA92000D4D08 /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				335AD5882052EA92000D4D08 /* Reachability.swift */,
+				335AD5892052EA92000D4D08 /* Reachability.h */,
+				335AD58A2052EA92000D4D08 /* Info.plist */,
+			);
+			path = Sources;
+			sourceTree = "<group>";
+		};
+		335AD58B2052EA92000D4D08 /* Tests */ = {
+			isa = PBXGroup;
+			children = (
+				335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */,
+				335AD58D2052EA92000D4D08 /* Info.plist */,
+			);
+			path = Tests;
+			sourceTree = "<group>";
+		};
+		335AD5A42052EE07000D4D08 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		57A45A021C197BE800384AE4 /* ReachabilityAppleTVSample */ = {
 			isa = PBXGroup;
 			children = (
@@ -167,11 +213,13 @@
 				CA6187601F8D21D700FD5234 /* CONTRIBUTING.md */,
 				CA6187611F8D21D700FD5234 /* LICENSE */,
 				CA6187621F8D21D700FD5234 /* ReachabilitySwift.podspec */,
-				AA7344741BE7678B008AFE69 /* Reachability */,
+				335AD5872052EA92000D4D08 /* Sources */,
+				335AD58B2052EA92000D4D08 /* Tests */,
 				AA7344911BE76820008AFE69 /* ReachabilitySample */,
 				00C54B201C09CF68001C3F12 /* ReachabilityMacSample */,
 				57A45A021C197BE800384AE4 /* ReachabilityAppleTVSample */,
 				AA7344731BE7678B008AFE69 /* Products */,
+				335AD5A42052EE07000D4D08 /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -182,20 +230,11 @@
 				AA7344901BE76820008AFE69 /* ReachabilitySample.app */,
 				00C54B1F1C09CF67001C3F12 /* ReachabilityMacSample.app */,
 				57A45A011C197BE800384AE4 /* ReachabilityAppleTVSample.app */,
+				335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
-		AA7344741BE7678B008AFE69 /* Reachability */ = {
-			isa = PBXGroup;
-			children = (
-				AA7344B01BE76862008AFE69 /* Reachability.swift */,
-				AA7344751BE7678B008AFE69 /* Reachability.h */,
-				AA7344771BE7678B008AFE69 /* Info.plist */,
-			);
-			path = Reachability;
-			sourceTree = "<group>";
-		};
 		AA7344911BE76820008AFE69 /* ReachabilitySample */ = {
 			isa = PBXGroup;
 			children = (
@@ -216,7 +255,7 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				AA7344761BE7678B008AFE69 /* Reachability.h in Headers */,
+				335AD58F2052EA92000D4D08 /* Reachability.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -241,6 +280,24 @@
 			productReference = 00C54B1F1C09CF67001C3F12 /* ReachabilityMacSample.app */;
 			productType = "com.apple.product-type.application";
 		};
+		335AD5962052EB22000D4D08 /* ReachabilityTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 335AD59F2052EB22000D4D08 /* Build configuration list for PBXNativeTarget "ReachabilityTests" */;
+			buildPhases = (
+				335AD5932052EB22000D4D08 /* Sources */,
+				335AD5942052EB22000D4D08 /* Frameworks */,
+				335AD5952052EB22000D4D08 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				335AD59E2052EB22000D4D08 /* PBXTargetDependency */,
+			);
+			name = ReachabilityTests;
+			productName = ReachabilityTests;
+			productReference = 335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
 		57A45A001C197BE800384AE4 /* ReachabilityAppleTVSample */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 57A45A0F1C197BE800384AE4 /* Build configuration list for PBXNativeTarget "ReachabilityAppleTVSample" */;
@@ -302,7 +359,7 @@
 		AA7344691BE7678B008AFE69 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastSwiftUpdateCheck = 0710;
+				LastSwiftUpdateCheck = 0920;
 				LastUpgradeCheck = 0900;
 				ORGANIZATIONNAME = "Ashley Mills";
 				TargetAttributes = {
@@ -310,6 +367,10 @@
 						CreatedOnToolsVersion = 7.1.1;
 						LastSwiftMigration = 0900;
 					};
+					335AD5962052EB22000D4D08 = {
+						CreatedOnToolsVersion = 9.2;
+						ProvisioningStyle = Automatic;
+					};
 					57A45A001C197BE800384AE4 = {
 						CreatedOnToolsVersion = 7.1.1;
 						LastSwiftMigration = 0900;
@@ -341,6 +402,7 @@
 			projectRoot = "";
 			targets = (
 				AA7344711BE7678B008AFE69 /* Reachability */,
+				335AD5962052EB22000D4D08 /* ReachabilityTests */,
 				AA73448F1BE76820008AFE69 /* ReachabilitySample */,
 				00C54B1E1C09CF67001C3F12 /* ReachabilityMacSample */,
 				57A45A001C197BE800384AE4 /* ReachabilityAppleTVSample */,
@@ -358,6 +420,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		335AD5952052EB22000D4D08 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		57A459FF1C197BE800384AE4 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -371,6 +440,7 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				335AD5902052EA92000D4D08 /* Info.plist in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -396,6 +466,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		335AD5932052EB22000D4D08 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				335AD5A22052EB32000D4D08 /* ReachabilityTests.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		57A459FD1C197BE800384AE4 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -409,8 +487,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				AA7344B11BE76862008AFE69 /* Reachability.swift in Sources */,
-				CA6187661F8D220200FD5234 /* CHANGELOG.md in Sources */,
+				335AD58E2052EA92000D4D08 /* Reachability.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -426,6 +503,11 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		335AD59E2052EB22000D4D08 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = AA7344711BE7678B008AFE69 /* Reachability */;
+			targetProxy = 335AD59D2052EB22000D4D08 /* PBXContainerItemProxy */;
+		};
 		CAC230C81BF2180000F6464E /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = AA7344711BE7678B008AFE69 /* Reachability */;
@@ -504,6 +586,56 @@
 			};
 			name = Release;
 		};
+		335AD5A02052EB22000D4D08 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "-";
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				PRODUCT_BUNDLE_IDENTIFIER = uk.co.joylordsystems.Reachability.ReachabilityTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = "";
+				SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphoneos iphonesimulator";
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_VERSION = 4.0;
+			};
+			name = Debug;
+		};
+		335AD5A12052EB22000D4D08 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "-";
+				CODE_SIGN_STYLE = Automatic;
+				COMBINE_HIDPI_IMAGES = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				PRODUCT_BUNDLE_IDENTIFIER = uk.co.joylordsystems.Reachability.ReachabilityTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = "";
+				SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphoneos iphonesimulator";
+				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+				SWIFT_VERSION = 4.0;
+			};
+			name = Release;
+		};
 		57A45A0D1C197BE800384AE4 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -662,7 +794,7 @@
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
-				INFOPLIST_FILE = Reachability/Info.plist;
+				INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -693,7 +825,7 @@
 				DYLIB_COMPATIBILITY_VERSION = 1;
 				DYLIB_CURRENT_VERSION = 1;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
-				INFOPLIST_FILE = Reachability/Info.plist;
+				INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@@ -751,6 +883,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		335AD59F2052EB22000D4D08 /* Build configuration list for PBXNativeTarget "ReachabilityTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				335AD5A02052EB22000D4D08 /* Debug */,
+				335AD5A12052EB22000D4D08 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		57A45A0F1C197BE800384AE4 /* Build configuration list for PBXNativeTarget "ReachabilityAppleTVSample" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

+ 1 - 1
Reachability.xcodeproj/xcshareddata/xcschemes/Reachability.xcscheme

@@ -33,7 +33,7 @@
             skipped = "NO">
             <BuildableReference
                BuildableIdentifier = "primary"
-               BlueprintIdentifier = "AA73447B1BE7678B008AFE69"
+               BlueprintIdentifier = "335AD5962052EB22000D4D08"
                BuildableName = "ReachabilityTests.xctest"
                BlueprintName = "ReachabilityTests"
                ReferencedContainer = "container:Reachability.xcodeproj">

+ 0 - 1
ReachabilityAppleTVSample/AppDelegate.swift

@@ -17,4 +17,3 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         return true
     }
 }
-

+ 17 - 18
ReachabilityAppleTVSample/Base.lproj/Main.storyboard

@@ -1,7 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder.AppleTV.Storyboard" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES" initialViewController="BYZ-38-t0r">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder.AppleTV.Storyboard" version="3.0" toolsVersion="13771" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
+    <device id="appleTV" orientation="landscape">
+        <adaptation id="light"/>
+    </device>
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
+        <deployment identifier="tvOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
         <!--View Controller-->
@@ -17,33 +22,27 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jew-4p-o9x">
-                                <rect key="frame" x="695" y="408" width="530" height="91"/>
-                                <animations/>
+                                <rect key="frame" x="924" y="468" width="72" height="91"/>
                                 <constraints>
-                                    <constraint firstAttribute="width" constant="530" id="MBv-Rz-Tzd"/>
                                     <constraint firstAttribute="height" constant="91" id="dMv-aK-0ih"/>
                                 </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="30"/>
-                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wE4-fM-BF3">
-                                <rect key="frame" x="695" y="507" width="530" height="165"/>
-                                <animations/>
+                                <rect key="frame" x="906" y="567" width="108" height="55"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="46"/>
-                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                         </subviews>
-                        <animations/>
-                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                        <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
-                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="wE4-fM-BF3" secondAttribute="bottom" constant="408" id="BDI-ry-4pH"/>
-                            <constraint firstItem="wE4-fM-BF3" firstAttribute="trailing" secondItem="Jew-4p-o9x" secondAttribute="trailing" id="GGb-7m-6uX"/>
-                            <constraint firstItem="Jew-4p-o9x" firstAttribute="leading" secondItem="wE4-fM-BF3" secondAttribute="leading" id="Q1c-Jb-iKN"/>
-                            <constraint firstItem="wE4-fM-BF3" firstAttribute="top" secondItem="Jew-4p-o9x" secondAttribute="bottom" constant="8" symbolic="YES" id="U8V-qN-EPr"/>
-                            <constraint firstItem="Jew-4p-o9x" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="Vng-pT-hW8"/>
-                            <constraint firstItem="Jew-4p-o9x" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="408" id="cMK-9n-7pq"/>
+                            <constraint firstItem="Jew-4p-o9x" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="McL-OC-xmz"/>
+                            <constraint firstItem="wE4-fM-BF3" firstAttribute="top" secondItem="Jew-4p-o9x" secondAttribute="bottom" constant="8" id="TRM-vy-Pvk"/>
+                            <constraint firstItem="Jew-4p-o9x" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="408" id="j6d-xn-evu"/>
+                            <constraint firstItem="wE4-fM-BF3" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="ne8-Vk-QZp"/>
                         </constraints>
                     </view>
                     <connections>

+ 6 - 3
ReachabilityAppleTVSample/ViewController.swift

@@ -53,7 +53,12 @@ class ViewController: UIViewController {
                 self.updateLabelColourWhenNotReachable(reachability)
             }
         } else {
-            NotificationCenter.default.addObserver(self, selector: #selector(ViewController.reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability)
+            NotificationCenter.default.addObserver(
+                self,
+                selector: #selector(ViewController.reachabilityChanged(_:)),
+                name: .reachabilityChanged,
+                object: reachability
+            )
         }
     }
     
@@ -108,6 +113,4 @@ class ViewController: UIViewController {
     deinit {
         stopNotifier()
     }
-    
 }
-

+ 0 - 1
ReachabilityMacSample/AppDelegate.swift

@@ -16,4 +16,3 @@ class AppDelegate: NSObject, NSApplicationDelegate {
   func applicationWillTerminate(_ aNotification: Notification) {
   }
 }
-

+ 6 - 1
ReachabilityMacSample/ViewController.swift

@@ -53,7 +53,12 @@ class ViewController: NSViewController {
                 self.updateLabelColourWhenNotReachable(reachability)
             }
         } else {
-            NotificationCenter.default.addObserver(self, selector: #selector(ViewController.reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability)
+            NotificationCenter.default.addObserver(
+                self,
+                selector: #selector(ViewController.reachabilityChanged(_:)),
+                name: .reachabilityChanged,
+                object: reachability
+            )
         }
     }
     

+ 17 - 24
ReachabilitySample/Base.lproj/Main.storyboard

@@ -1,9 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
+    <device id="retina5_9" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
-        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
         <!--View Controller-->
@@ -15,39 +18,29 @@
                         <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
-                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="UBQ-2c-x8L">
-                                <rect key="frame" x="40" y="274" width="520" height="53"/>
-                                <animations/>
+                                <rect key="frame" x="136" y="379.66666666666669" width="103" height="53"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="44"/>
-                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5EE-X2-pKr">
-                                <rect key="frame" x="276" y="242" width="49" height="24"/>
-                                <animations/>
+                                <rect key="frame" x="163.66666666666666" y="242" width="48" height="24"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="20"/>
-                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                         </subviews>
-                        <animations/>
-                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
-                            <constraint firstItem="UBQ-2c-x8L" firstAttribute="top" secondItem="5EE-X2-pKr" secondAttribute="bottom" constant="8" symbolic="YES" id="CuO-ho-b10"/>
-                            <constraint firstAttribute="centerY" secondItem="UBQ-2c-x8L" secondAttribute="centerY" id="K7q-cv-Lfi"/>
-                            <constraint firstItem="5EE-X2-pKr" firstAttribute="centerX" secondItem="UBQ-2c-x8L" secondAttribute="centerX" id="MZr-wz-ELn"/>
-                            <constraint firstItem="UBQ-2c-x8L" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="YBI-sa-7Z9"/>
-                            <constraint firstItem="5EE-X2-pKr" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="225" id="pMO-lY-Wq8"/>
-                            <constraint firstAttribute="trailingMargin" secondItem="UBQ-2c-x8L" secondAttribute="trailing" constant="20" id="xcC-HE-ZUz"/>
+                            <constraint firstItem="UBQ-2c-x8L" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="3mq-UY-zBf"/>
+                            <constraint firstItem="5EE-X2-pKr" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="OZH-vM-adg"/>
+                            <constraint firstItem="5EE-X2-pKr" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="198" id="OnQ-cQ-2GV"/>
+                            <constraint firstItem="UBQ-2c-x8L" firstAttribute="top" secondItem="5EE-X2-pKr" secondAttribute="bottom" constant="113.66666666666669" id="PpX-WU-7UN"/>
                         </constraints>
-                        <variation key="default">
-                            <mask key="constraints">
-                                <exclude reference="pMO-lY-Wq8"/>
-                            </mask>
-                        </variation>
                     </view>
                     <connections>
                         <outlet property="hostNameLabel" destination="5EE-X2-pKr" id="qt8-ZE-mUg"/>

+ 7 - 6
ReachabilitySample/ViewController.swift

@@ -53,7 +53,12 @@ class ViewController: UIViewController {
                 self.updateLabelColourWhenNotReachable(reachability)
             }
         } else {
-            NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability)
+            NotificationCenter.default.addObserver(
+                self,
+                selector: #selector(reachabilityChanged(_:)),
+                name: .reachabilityChanged,
+                object: reachability
+            )
         }
     }
     
@@ -93,8 +98,7 @@ class ViewController: UIViewController {
         
         self.networkStatus.text = "\(reachability.connection)"
     }
-    
-    
+
     @objc func reachabilityChanged(_ note: Notification) {
         let reachability = note.object as! Reachability
         
@@ -108,7 +112,4 @@ class ViewController: UIViewController {
     deinit {
         stopNotifier()
     }
-    
 }
-
-

+ 0 - 0
Reachability/Info.plist → Sources/Info.plist


+ 0 - 0
Reachability/Reachability.h → Sources/Reachability.h


+ 12 - 15
Reachability/Reachability.swift → Sources/Reachability.swift

@@ -42,8 +42,7 @@ extension Notification.Name {
     public static let reachabilityChanged = Notification.Name("reachabilityChanged")
 }
 
-func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) {
-
+func callback(reachability: SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) {
     guard let info = info else { return }
     
     let reachability = Unmanaged<Reachability>.fromOpaque(info).takeUnretainedValue()
@@ -101,7 +100,6 @@ public class Reachability {
     }
     
     public var connection: Connection {
-        
         guard isReachableFlagSet else { return .none }
 
         // If we're reachable, but not on an iOS device (i.e. simulator), we must be on WiFi
@@ -144,21 +142,21 @@ public class Reachability {
     fileprivate let reachabilityRef: SCNetworkReachability
     
     fileprivate let reachabilitySerialQueue = DispatchQueue(label: "uk.co.ashleymills.reachability")
+
+    fileprivate var usingHostname = false
     
-    required public init(reachabilityRef: SCNetworkReachability) {
+    required public init(reachabilityRef: SCNetworkReachability, usingHostname: Bool = false) {
         allowsCellularConnection = true
         self.reachabilityRef = reachabilityRef
+        self.usingHostname = usingHostname
     }
     
     public convenience init?(hostname: String) {
-        
         guard let ref = SCNetworkReachabilityCreateWithName(nil, hostname) else { return nil }
-        
-        self.init(reachabilityRef: ref)
+        self.init(reachabilityRef: ref, usingHostname: true)
     }
     
     public convenience init?() {
-        
         var zeroAddress = sockaddr()
         zeroAddress.sa_len = UInt8(MemoryLayout<sockaddr>.size)
         zeroAddress.sa_family = sa_family_t(AF_INET)
@@ -177,7 +175,6 @@ public extension Reachability {
     
     // MARK: - *** Notifier methods ***
     func startNotifier() throws {
-        
         guard !notifierRunning else { return }
         
         var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)
@@ -196,7 +193,7 @@ public extension Reachability {
         reachabilitySerialQueue.async {
             self.reachabilityChanged()
         }
-        
+
         notifierRunning = true
     }
     
@@ -210,7 +207,6 @@ public extension Reachability {
     // MARK: - *** Connection test methods ***
     @available(*, deprecated: 4.0, message: "Please use `connection != .none`")
     var isReachable: Bool {
-        
         guard isReachableFlagSet else { return false }
         
         if isConnectionRequiredAndTransientFlagSet {
@@ -235,7 +231,6 @@ public extension Reachability {
 
     @available(*, deprecated: 4.0, message: "Please use `connection == .wifi`")
     var isReachableViaWiFi: Bool {
-        
         // Check we're reachable
         guard isReachableFlagSet else { return false }
         
@@ -247,7 +242,6 @@ public extension Reachability {
     }
     
     var description: String {
-        
         let W = isRunningOnDevice ? (isOnWWANFlagSet ? "W" : "-") : "X"
         let R = isReachableFlagSet ? "R" : "-"
         let c = isConnectionRequiredFlagSet ? "c" : "-"
@@ -263,13 +257,15 @@ public extension Reachability {
 }
 
 fileprivate extension Reachability {
-    
     func reachabilityChanged() {
         guard previousFlags != flags else { return }
-        
+
         let block = connection != .none ? whenReachable : whenUnreachable
         
         DispatchQueue.main.async {
+            if self.usingHostname {
+                print("USING HOSTNAME ABOUT TO CALL BLOCK")
+            }
             block?(self)
             self.notificationCenter.post(name: .reachabilityChanged, object:self)
         }
@@ -318,6 +314,7 @@ fileprivate extension Reachability {
     var flags: SCNetworkReachabilityFlags {
         var flags = SCNetworkReachabilityFlags()
         if SCNetworkReachabilityGetFlags(reachabilityRef, &flags) {
+            print("Returning flags \(flags)")
             return flags
         } else {
             return SCNetworkReachabilityFlags()

+ 0 - 0
ReachabilityTests/Info.plist → Tests/Info.plist


+ 4 - 6
ReachabilityTests/ReachabilityTests.swift → Tests/ReachabilityTests.swift

@@ -20,11 +20,6 @@ class ReachabilityTests: XCTestCase {
     }
     
     func testValidHost() {
-        
-        // Testing with an invalid host will initially show as UNreachable, but then the callback
-        // gets fired a second time reporting the host as reachable
-        
-    
         let validHostName = "google.com"
         
         guard let reachability = Reachability(hostname: validHostName) else {
@@ -61,6 +56,9 @@ class ReachabilityTests: XCTestCase {
     }
 
     func testInvalidHost() {
+        // Testing with an invalid host will initially show as reachable, but then the callback
+        // gets fired a second time reporting the host as unreachable
+
         let invalidHostName = "invalidhost"
 
         guard let reachability = Reachability(hostname: invalidHostName) else {
@@ -93,5 +91,5 @@ class ReachabilityTests: XCTestCase {
         
         reachability.stopNotifier()
     }
-    
+
 }