From 8b2b3269c95fe9da5ce78d30253008b578a8aa26 Mon Sep 17 00:00:00 2001 From: Nicholas Arner Date: Mon, 21 Aug 2017 15:58:19 -0400 Subject: [PATCH 1/3] After performing automatic Swift conversion --- MotionKit.xcodeproj/project.pbxproj | 8 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 11420 bytes .../xcschemes/MotionKit.xcscheme | 99 ++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 ++++ MotionKit/MotionKit.swift | 126 +++++++++--------- MotionKitTests/MotionKitTests.swift | 2 +- 6 files changed, 198 insertions(+), 64 deletions(-) create mode 100644 MotionKit.xcodeproj/project.xcworkspace/xcuserdata/nicholasarner.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/MotionKit.xcscheme create mode 100644 MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/MotionKit.xcodeproj/project.pbxproj b/MotionKit.xcodeproj/project.pbxproj index f9980c2..2c3bf5c 100644 --- a/MotionKit.xcodeproj/project.pbxproj +++ b/MotionKit.xcodeproj/project.pbxproj @@ -166,9 +166,11 @@ TargetAttributes = { 75FDED541A9541F800283A97 = { CreatedOnToolsVersion = 6.1.1; + LastSwiftMigration = 0830; }; 75FDED5F1A9541F800283A97 = { CreatedOnToolsVersion = 6.1.1; + LastSwiftMigration = 0830; }; }; }; @@ -332,6 +334,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -347,6 +350,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; }; name = Release; }; @@ -364,6 +368,7 @@ INFOPLIST_FILE = MotionKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -377,6 +382,7 @@ INFOPLIST_FILE = MotionKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Release; }; @@ -399,6 +405,7 @@ 75FDED6D1A9541F800283A97 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; 75FDED6E1A9541F800283A97 /* Build configuration list for PBXNativeTarget "MotionKitTests" */ = { isa = XCConfigurationList; @@ -407,6 +414,7 @@ 75FDED701A9541F800283A97 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/MotionKit.xcodeproj/project.xcworkspace/xcuserdata/nicholasarner.xcuserdatad/UserInterfaceState.xcuserstate b/MotionKit.xcodeproj/project.xcworkspace/xcuserdata/nicholasarner.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..27cc10096ff95e9140a42119a4599143c6ae0f82 GIT binary patch literal 11420 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 literal 0 HcmV?d00001 diff --git a/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/MotionKit.xcscheme b/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/MotionKit.xcscheme new file mode 100644 index 0000000..3799fd0 --- /dev/null +++ b/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/MotionKit.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/xcschememanagement.plist b/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d78602b --- /dev/null +++ b/MotionKit.xcodeproj/xcuserdata/nicholasarner.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + MotionKit.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 75FDED541A9541F800283A97 + + primary + + + 75FDED5F1A9541F800283A97 + + primary + + + + + diff --git a/MotionKit/MotionKit.swift b/MotionKit/MotionKit.swift index eb0860c..b9058b1 100644 --- a/MotionKit/MotionKit.swift +++ b/MotionKit/MotionKit.swift @@ -15,20 +15,20 @@ import CoreMotion //_______________________________________________________________________________________________________________ // this helps retrieve values from the sensors. @objc protocol MotionKitDelegate { - optional func retrieveAccelerometerValues (x: Double, y:Double, z:Double, absoluteValue: Double) - optional func retrieveGyroscopeValues (x: Double, y:Double, z:Double, absoluteValue: Double) - optional func retrieveDeviceMotionObject (deviceMotion: CMDeviceMotion) - optional func retrieveMagnetometerValues (x: Double, y:Double, z:Double, absoluteValue: Double) - - optional func getAccelerationValFromDeviceMotion (x: Double, y:Double, z:Double) - optional func getGravityAccelerationValFromDeviceMotion (x: Double, y:Double, z:Double) - optional func getRotationRateFromDeviceMotion (x: Double, y:Double, z:Double) - optional func getMagneticFieldFromDeviceMotion (x: Double, y:Double, z:Double) - optional func getAttitudeFromDeviceMotion (attitude: CMAttitude) + @objc optional func retrieveAccelerometerValues (_ x: Double, y:Double, z:Double, absoluteValue: Double) + @objc optional func retrieveGyroscopeValues (_ x: Double, y:Double, z:Double, absoluteValue: Double) + @objc optional func retrieveDeviceMotionObject (_ deviceMotion: CMDeviceMotion) + @objc optional func retrieveMagnetometerValues (_ x: Double, y:Double, z:Double, absoluteValue: Double) + + @objc optional func getAccelerationValFromDeviceMotion (_ x: Double, y:Double, z:Double) + @objc optional func getGravityAccelerationValFromDeviceMotion (_ x: Double, y:Double, z:Double) + @objc optional func getRotationRateFromDeviceMotion (_ x: Double, y:Double, z:Double) + @objc optional func getMagneticFieldFromDeviceMotion (_ x: Double, y:Double, z:Double) + @objc optional func getAttitudeFromDeviceMotion (_ attitude: CMAttitude) } -@objc(MotionKit) public class MotionKit :NSObject{ +@objc(MotionKit) open class MotionKit :NSObject{ let manager = CMMotionManager() var delegate: MotionKitDelegate? @@ -52,13 +52,13 @@ import CoreMotion * given NSOperationQueue will be cancelled. You can access the retrieved values either by a * Trailing Closure or through a Delgate. */ - public func getAccelerometerValues (interval: NSTimeInterval = 0.1, values: ((x: Double, y: Double, z: Double) -> ())? ){ + open func getAccelerometerValues (_ interval: TimeInterval = 0.1, values: ((_ x: Double, _ y: Double, _ z: Double) -> ())? ){ var valX: Double! var valY: Double! var valZ: Double! - if manager.accelerometerAvailable { + if manager.isAccelerometerAvailable { manager.accelerometerUpdateInterval = interval - manager.startAccelerometerUpdatesToQueue(NSOperationQueue(), withHandler: { + manager.startAccelerometerUpdates(to: OperationQueue(), withHandler: { (data, error) in if let isError = error { @@ -69,7 +69,7 @@ import CoreMotion valZ = data!.acceleration.z if values != nil{ - values!(x: valX,y: valY,z: valZ) + values!(valX,valY,valZ) } let absoluteVal = sqrt(valX * valX + valY * valY + valZ * valZ) self.delegate?.retrieveAccelerometerValues!(valX, y: valY, z: valZ, absoluteValue: absoluteVal) @@ -88,14 +88,14 @@ import CoreMotion * given NSOperationQueue will be cancelled. You can access the retrieved values either by a * Trailing Closure or through a Delegate. */ - public func getGyroValues (interval: NSTimeInterval = 0.1, values: ((x: Double, y: Double, z:Double) -> ())? ) { + open func getGyroValues (_ interval: TimeInterval = 0.1, values: ((_ x: Double, _ y: Double, _ z:Double) -> ())? ) { var valX: Double! var valY: Double! var valZ: Double! - if manager.gyroAvailable{ + if manager.isGyroAvailable{ manager.gyroUpdateInterval = interval - manager.startGyroUpdatesToQueue(NSOperationQueue(), withHandler: { + manager.startGyroUpdates(to: OperationQueue(), withHandler: { (data, error) in if let isError = error{ @@ -106,7 +106,7 @@ import CoreMotion valZ = data!.rotationRate.z if values != nil{ - values!(x: valX, y: valY, z: valZ) + values!(valX, valY, valZ) } let absoluteVal = sqrt(valX * valX + valY * valY + valZ * valZ) self.delegate?.retrieveGyroscopeValues!(valX, y: valY, z: valZ, absoluteValue: absoluteVal) @@ -124,15 +124,15 @@ import CoreMotion * Starts magnetometer updates, providing data to the given handler through the given queue. * You can access the retrieved values either by a Trailing Closure or through a Delegate. */ - @available(iOS, introduced=5.0) - public func getMagnetometerValues (interval: NSTimeInterval = 0.1, values: ((x: Double, y:Double, z:Double) -> ())? ){ + @available(iOS, introduced: 5.0) + open func getMagnetometerValues (_ interval: TimeInterval = 0.1, values: ((_ x: Double, _ y:Double, _ z:Double) -> ())? ){ var valX: Double! var valY: Double! var valZ: Double! - if manager.magnetometerAvailable { + if manager.isMagnetometerAvailable { manager.magnetometerUpdateInterval = interval - manager.startMagnetometerUpdatesToQueue(NSOperationQueue()){ + manager.startMagnetometerUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ @@ -143,7 +143,7 @@ import CoreMotion valZ = data!.magneticField.z if values != nil{ - values!(x: valX, y: valY, z: valZ) + values!(valX, valY, valZ) } let absoluteVal = sqrt(valX * valX + valY * valY + valZ * valZ) self.delegate?.retrieveMagnetometerValues!(valX, y: valY, z: valZ, absoluteValue: absoluteVal) @@ -165,18 +165,18 @@ import CoreMotion * attitudeReferenceFrame to determine this. You can access the retrieved values either by a * Trailing Closure or through a Delegate. */ - public func getDeviceMotionObject (interval: NSTimeInterval = 0.1, values: ((deviceMotion: CMDeviceMotion) -> ())? ) { + open func getDeviceMotionObject (_ interval: TimeInterval = 0.1, values: ((_ deviceMotion: CMDeviceMotion) -> ())? ) { - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ NSLog("Error: %@", isError) } if values != nil{ - values!(deviceMotion: data!) + values!(data!) } self.delegate?.retrieveDeviceMotionObject!(data!) } @@ -191,14 +191,14 @@ import CoreMotion * getAccelerationFromDeviceMotion:interval:values: * You can retrieve the processed user accelaration data from the device motion from this method. */ - public func getAccelerationFromDeviceMotion (interval: NSTimeInterval = 0.1, values: ((x:Double, y:Double, z:Double) -> ())? ) { + open func getAccelerationFromDeviceMotion (_ interval: TimeInterval = 0.1, values: ((_ x:Double, _ y:Double, _ z:Double) -> ())? ) { var valX: Double! var valY: Double! var valZ: Double! - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ @@ -209,7 +209,7 @@ import CoreMotion valZ = data!.userAcceleration.z if values != nil{ - values!(x: valX, y: valY, z: valZ) + values!(valX, valY, valZ) } self.delegate?.getAccelerationValFromDeviceMotion!(valX, y: valY, z: valZ) @@ -225,14 +225,14 @@ import CoreMotion * You can retrieve the processed gravitational accelaration data from the device motion from this * method. */ - public func getGravityAccelerationFromDeviceMotion (interval: NSTimeInterval = 0.1, values: ((x:Double, y:Double, z:Double) -> ())? ) { + open func getGravityAccelerationFromDeviceMotion (_ interval: TimeInterval = 0.1, values: ((_ x:Double, _ y:Double, _ z:Double) -> ())? ) { var valX: Double! var valY: Double! var valZ: Double! - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ @@ -243,7 +243,7 @@ import CoreMotion valZ = data!.gravity.z if values != nil{ - values!(x: valX, y: valY, z: valZ) + values!(valX, valY, valZ) } let absoluteVal = sqrt(valX * valX + valY * valY + valZ * valZ) @@ -261,18 +261,18 @@ import CoreMotion * You can retrieve the processed attitude data from the device motion from this * method. */ - public func getAttitudeFromDeviceMotion (interval: NSTimeInterval = 0.1, values: ((attitude: CMAttitude) -> ())? ) { + open func getAttitudeFromDeviceMotion (_ interval: TimeInterval = 0.1, values: ((_ attitude: CMAttitude) -> ())? ) { - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ NSLog("Error: %@", isError) } if values != nil{ - values!(attitude: data!.attitude) + values!(data!.attitude) } self.delegate?.getAttitudeFromDeviceMotion!(data!.attitude) @@ -288,14 +288,14 @@ import CoreMotion * You can retrieve the processed rotation data from the device motion from this * method. */ - public func getRotationRateFromDeviceMotion (interval: NSTimeInterval = 0.1, values: ((x:Double, y:Double, z:Double) -> ())? ) { + open func getRotationRateFromDeviceMotion (_ interval: TimeInterval = 0.1, values: ((_ x:Double, _ y:Double, _ z:Double) -> ())? ) { var valX: Double! var valY: Double! var valZ: Double! - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ @@ -306,7 +306,7 @@ import CoreMotion valZ = data!.rotationRate.z if values != nil{ - values!(x: valX, y: valY, z: valZ) + values!(valX, valY, valZ) } let absoluteVal = sqrt(valX * valX + valY * valY + valZ * valZ) @@ -324,15 +324,15 @@ import CoreMotion * You can retrieve the processed magnetic field data from the device motion from this * method. */ - public func getMagneticFieldFromDeviceMotion (interval: NSTimeInterval = 0.1, values: ((x:Double, y:Double, z:Double, accuracy: Int32) -> ())? ) { + open func getMagneticFieldFromDeviceMotion (_ interval: TimeInterval = 0.1, values: ((_ x:Double, _ y:Double, _ z:Double, _ accuracy: Int32) -> ())? ) { var valX: Double! var valY: Double! var valZ: Double! var valAccuracy: Int32! - if manager.deviceMotionAvailable{ + if manager.isDeviceMotionAvailable{ manager.deviceMotionUpdateInterval = interval - manager.startDeviceMotionUpdatesToQueue(NSOperationQueue()){ + manager.startDeviceMotionUpdates(to: OperationQueue()){ (data, error) in if let isError = error{ @@ -344,7 +344,7 @@ import CoreMotion valAccuracy = data!.magneticField.accuracy.rawValue if values != nil{ - values!(x: valX, y: valY, z: valZ, accuracy: valAccuracy) + values!(valX, valY, valZ, valAccuracy) } self.delegate?.getMagneticFieldFromDeviceMotion!(valX, y: valY, z: valZ) @@ -365,38 +365,38 @@ import CoreMotion /* MARK :- INSTANTANIOUS METHODS START HERE */ - public func getAccelerationAtCurrentInstant (values: (x:Double, y:Double, z:Double) -> ()){ + open func getAccelerationAtCurrentInstant (_ values: @escaping (_ x:Double, _ y:Double, _ z:Double) -> ()){ self.getAccelerationFromDeviceMotion(0.5) { (x, y, z) -> () in - values(x: x,y: y,z: z) + values(x,y,z) self.stopDeviceMotionUpdates() } } - public func getGravitationalAccelerationAtCurrentInstant (values: (x:Double, y:Double, z:Double) -> ()){ + open func getGravitationalAccelerationAtCurrentInstant (_ values: @escaping (_ x:Double, _ y:Double, _ z:Double) -> ()){ self.getGravityAccelerationFromDeviceMotion(0.5) { (x, y, z) -> () in - values(x: x,y: y,z: z) + values(x,y,z) self.stopDeviceMotionUpdates() } } - public func getAttitudeAtCurrentInstant (values: (attitude: CMAttitude) -> ()){ + open func getAttitudeAtCurrentInstant (_ values: @escaping (_ attitude: CMAttitude) -> ()){ self.getAttitudeFromDeviceMotion(0.5) { (attitude) -> () in - values(attitude: attitude) + values(attitude) self.stopDeviceMotionUpdates() } } - public func getMageticFieldAtCurrentInstant (values: (x:Double, y:Double, z:Double) -> ()){ + open func getMageticFieldAtCurrentInstant (_ values: @escaping (_ x:Double, _ y:Double, _ z:Double) -> ()){ self.getMagneticFieldFromDeviceMotion(0.5) { (x, y, z, accuracy) -> () in - values(x: x,y: y,z: z) + values(x,y,z) self.stopDeviceMotionUpdates() } } - public func getGyroValuesAtCurrentInstant (values: (x:Double, y:Double, z:Double) -> ()){ + open func getGyroValuesAtCurrentInstant (_ values: @escaping (_ x:Double, _ y:Double, _ z:Double) -> ()){ self.getRotationRateFromDeviceMotion(0.5) { (x, y, z) -> () in - values(x: x,y: y,z: z) + values(x,y,z) self.stopDeviceMotionUpdates() } } @@ -411,7 +411,7 @@ import CoreMotion * Discussion: * Stop accelerometer updates. */ - public func stopAccelerometerUpdates(){ + open func stopAccelerometerUpdates(){ self.manager.stopAccelerometerUpdates() NSLog("Accelaration Updates Status - Stopped") } @@ -422,7 +422,7 @@ import CoreMotion * Discussion: * Stops gyro updates. */ - public func stopGyroUpdates(){ + open func stopGyroUpdates(){ self.manager.stopGyroUpdates() NSLog("Gyroscope Updates Status - Stopped") } @@ -433,7 +433,7 @@ import CoreMotion * Discussion: * Stops device motion updates. */ - public func stopDeviceMotionUpdates() { + open func stopDeviceMotionUpdates() { self.manager.stopDeviceMotionUpdates() NSLog("Device Motion Updates Status - Stopped") } @@ -444,8 +444,8 @@ import CoreMotion * Discussion: * Stops magnetometer updates. */ - @available(iOS, introduced=5.0) - public func stopmagnetometerUpdates() { + @available(iOS, introduced: 5.0) + open func stopmagnetometerUpdates() { self.manager.stopMagnetometerUpdates() NSLog("Magnetometer Updates Status - Stopped") } diff --git a/MotionKitTests/MotionKitTests.swift b/MotionKitTests/MotionKitTests.swift index d78e1e7..0d36021 100644 --- a/MotionKitTests/MotionKitTests.swift +++ b/MotionKitTests/MotionKitTests.swift @@ -28,7 +28,7 @@ class MotionKitTests: XCTestCase { func testPerformanceExample() { // This is an example of a performance test case. - self.measureBlock() { + self.measure() { // Put the code you want to measure the time of here. } } From dfd3aa0959a3a27687e10b61b395143441acc335 Mon Sep 17 00:00:00 2001 From: Nicholas Arner Date: Mon, 21 Aug 2017 15:59:32 -0400 Subject: [PATCH 2/3] Replacing NSLog's with print statements --- MotionKit/MotionKit.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/MotionKit/MotionKit.swift b/MotionKit/MotionKit.swift index b9058b1..f596111 100644 --- a/MotionKit/MotionKit.swift +++ b/MotionKit/MotionKit.swift @@ -62,7 +62,7 @@ import CoreMotion (data, error) in if let isError = error { - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.acceleration.x valY = data!.acceleration.y @@ -99,7 +99,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.rotationRate.x valY = data!.rotationRate.y @@ -136,7 +136,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.magneticField.x valY = data!.magneticField.y @@ -173,7 +173,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } if values != nil{ values!(data!) @@ -202,7 +202,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.userAcceleration.x valY = data!.userAcceleration.y @@ -236,7 +236,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.gravity.x valY = data!.gravity.y @@ -269,7 +269,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } if values != nil{ values!(data!.attitude) @@ -299,7 +299,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.rotationRate.x valY = data!.rotationRate.y @@ -336,7 +336,7 @@ import CoreMotion (data, error) in if let isError = error{ - NSLog("Error: %@", isError) + print("Error: %@", isError) } valX = data!.magneticField.field.x valY = data!.magneticField.field.y From e56c4ff10952fd91bd18a873528047cdf71be9f5 Mon Sep 17 00:00:00 2001 From: Nicholas Arner Date: Mon, 21 Aug 2017 16:00:19 -0400 Subject: [PATCH 3/3] Xcode project setting updates --- MotionKit.xcodeproj/project.pbxproj | 16 +++++++++++++++- MotionKit/Info.plist | 2 +- MotionKitTests/Info.plist | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/MotionKit.xcodeproj/project.pbxproj b/MotionKit.xcodeproj/project.pbxproj index 2c3bf5c..ff639b5 100644 --- a/MotionKit.xcodeproj/project.pbxproj +++ b/MotionKit.xcodeproj/project.pbxproj @@ -161,7 +161,7 @@ 75FDED4C1A9541F800283A97 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastUpgradeCheck = 0830; ORGANIZATIONNAME = MotionKit; TargetAttributes = { 75FDED541A9541F800283A97 = { @@ -250,16 +250,20 @@ 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_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -296,8 +300,10 @@ 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_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -306,6 +312,7 @@ ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -315,6 +322,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -325,6 +333,7 @@ 75FDED6C1A9541F800283A97 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -332,6 +341,7 @@ INFOPLIST_FILE = MotionKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.motionkit.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -341,6 +351,7 @@ 75FDED6D1A9541F800283A97 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -348,6 +359,7 @@ INFOPLIST_FILE = MotionKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.motionkit.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -367,6 +379,7 @@ ); INFOPLIST_FILE = MotionKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.motionkit.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 3.0; }; @@ -381,6 +394,7 @@ ); INFOPLIST_FILE = MotionKitTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.motionkit.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 3.0; }; diff --git a/MotionKit/Info.plist b/MotionKit/Info.plist index c328732..d3de8ee 100644 --- a/MotionKit/Info.plist +++ b/MotionKit/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.motionkit.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/MotionKitTests/Info.plist b/MotionKitTests/Info.plist index 0e76198..ba72822 100644 --- a/MotionKitTests/Info.plist +++ b/MotionKitTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.motionkit.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName