From 8e0d706c347c1bc80809475d6c61976fc5ed07e9 Mon Sep 17 00:00:00 2001 From: Joe Newton Date: Wed, 13 Oct 2021 13:10:40 -0400 Subject: [PATCH 1/4] Modernized project and added support for armv7 architectures and watchOS --- .github/workflows/carthage.yml | 27 + .github/workflows/cocoapods.yml | 23 + .github/workflows/swift-pacakge.yml | 42 + .github/workflows/swift.yml | 24 - .github/workflows/upload-assets.yml | 49 + .github/workflows/xcframework.yml | 17 + .github/workflows/xcodebuild.yml | 110 ++ .gitignore | 8 +- .swiftlint.yml | 12 +- LICENSE | 2 +- MethodNotificationCenter.podspec | 12 +- .../project.pbxproj | 1146 ++++++++++++----- .../contents.xcworkspacedata | 2 +- ...hodNotificationCenter macOS Tests.xcscheme | 14 +- .../MethodNotificationCenter macOS.xcscheme | 26 +- ...thodNotificationCenter tvOS Tests.xcscheme | 14 +- .../MethodNotificationCenter tvOS.xcscheme | 26 +- ...dNotificationCenter watchOS Tests.xcscheme | 69 + .../MethodNotificationCenter watchOS.xcscheme | 71 + .../MethodNotificationCenter.xcscheme | 26 +- .../MethodNotificationCenterTests.xcscheme | 14 +- .../xcschemes/Run SwiftLint.xcscheme | 67 + .../xcschemes/XCFramework.xcscheme | 67 + Package.swift | 7 +- README.md | 39 +- .../include/MethodNotification.h | 2 +- .../include/MethodNotificationCenter.h | 7 +- .../include/MethodNotificationObservable.h | 2 +- .../module/module.modulemap | 5 + .../src/MethodNotification.m | 2 +- .../src/MethodNotificationCenter.m | 4 +- .../src/MethodNotificationObservable.m | 2 +- .../src/mnc-fowarding-arm.s | 2 +- .../src/mnc-fowarding-armv7.s | 26 + .../src/mnc-fowarding-i386.s | 2 +- .../src/mnc-fowarding-simulator-i386.s | 2 +- .../src/mnc-fowarding-simulator-x86_64.s | 2 +- .../src/mnc-fowarding-x86_64.s | 2 +- .../MethodNotificationCenterTests.m | 15 +- .../MethodNotificationCenterTests.swift | 100 +- ...dNotificationCenter macOS Tests.xctestplan | 32 + ...odNotificationCenter tvOS Tests.xctestplan | 32 + ...otificationCenter watchOS Tests.xctestplan | 32 + .../MethodNotificationCenterTests.xctestplan | 32 + scripts/carthage.sh | 31 + scripts/resolvepath.sh | 6 + scripts/versions.sh | 34 + scripts/xcframework.sh | 109 ++ 48 files changed, 1863 insertions(+), 534 deletions(-) create mode 100644 .github/workflows/carthage.yml create mode 100644 .github/workflows/cocoapods.yml create mode 100644 .github/workflows/swift-pacakge.yml delete mode 100644 .github/workflows/swift.yml create mode 100644 .github/workflows/upload-assets.yml create mode 100644 .github/workflows/xcframework.yml create mode 100644 .github/workflows/xcodebuild.yml create mode 100644 MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS Tests.xcscheme create mode 100644 MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS.xcscheme create mode 100644 MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme create mode 100644 MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme create mode 100644 Sources/MethodNotificationCenter/module/module.modulemap create mode 100644 Sources/MethodNotificationCenter/src/mnc-fowarding-armv7.s create mode 100644 Tests/Test Plans/MethodNotificationCenter macOS Tests.xctestplan create mode 100644 Tests/Test Plans/MethodNotificationCenter tvOS Tests.xctestplan create mode 100644 Tests/Test Plans/MethodNotificationCenter watchOS Tests.xctestplan create mode 100644 Tests/Test Plans/MethodNotificationCenterTests.xctestplan create mode 100755 scripts/carthage.sh create mode 100755 scripts/resolvepath.sh create mode 100755 scripts/versions.sh create mode 100755 scripts/xcframework.sh diff --git a/.github/workflows/carthage.yml b/.github/workflows/carthage.yml new file mode 100644 index 0000000..574a6a0 --- /dev/null +++ b/.github/workflows/carthage.yml @@ -0,0 +1,27 @@ +name: Carthage +on: [push, workflow_dispatch] + +jobs: + build: + name: Build + runs-on: macOS-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Install Carthage + run: | + brew update + brew install carthage + + - name: Create Cartfile + run: | + # Delete all of the old tags (if any) and create a new tag for building + git tag | xargs git tag -d + git tag 1.0 + + echo "git \"file://$(pwd)\"" > ./Cartfile + + - name: Build + run: | + ./scripts/carthage.sh update diff --git a/.github/workflows/cocoapods.yml b/.github/workflows/cocoapods.yml new file mode 100644 index 0000000..cd10b15 --- /dev/null +++ b/.github/workflows/cocoapods.yml @@ -0,0 +1,23 @@ +name: Cocoapods +on: [push, workflow_dispatch] + +jobs: + lint: + name: Lint + runs-on: macOS-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Setup Cocoapods + uses: maxim-lobanov/setup-cocoapods@v1 + with: + version: latest + + - name: Lint (Dynamic Library) + run: | + pod lib lint + + - name: Lint (Static Library) + run: | + pod lib lint --use-libraries diff --git a/.github/workflows/swift-pacakge.yml b/.github/workflows/swift-pacakge.yml new file mode 100644 index 0000000..f041025 --- /dev/null +++ b/.github/workflows/swift-pacakge.yml @@ -0,0 +1,42 @@ +name: Swift Package +on: [push, workflow_dispatch] + +jobs: + build: + name: Build + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + swift --version + swift build -v + + test: + name: Test + runs-on: macOS-latest + needs: build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Test + run: | + swift test -v --enable-code-coverage + + - name: Generate Code Coverage File + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + run: | + xcrun llvm-cov export --instr-profile=.build/x86_64-apple-macosx/debug/codecov/default.profdata .build/x86_64-apple-macosx/debug/MethodNotificationCenterPackageTests.xctest/Contents/MacOS/MethodNotificationCenterPackageTests > ./info.lcov + + - name: Upload Code Coverage + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: ./info.lcov + verbose: true diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml deleted file mode 100644 index 04e75ec..0000000 --- a/.github/workflows/swift.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build - -on: [push, pull_request] - -jobs: - build: - runs-on: macOS-latest - steps: - - uses: actions/checkout@v2 - - name: Run XCTests - run: | - xcodebuild -scheme "MethodNotificationCenter" -destination "platform=iOS Simulator,name=iPhone 11 Pro Max" -configuration Debug ONLY_ACTIVE_ARCH=YES test - xcodebuild -scheme "MethodNotificationCenter macOS" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=YES test - xcodebuild -scheme "MethodNotificationCenter tvOS" -destination "platform=tvOS Simulator,name=Apple TV 4K" -configuration Debug ONLY_ACTIVE_ARCH=YES test - - name: Swift Package Build & Test - run: | - swift build -v - swift test -v --enable-code-coverage - - name: Upload Code Coverage - run: | - xcrun llvm-cov export -format="lcov" .build/debug/MethodNotificationCenterPackageTests.xctest/Contents/MacOS/MethodNotificationCenterPackageTests -instr-profile .build/debug/codecov/default.profdata > info.lcov - bash <(curl https://codecov.io/bash) - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/upload-assets.yml b/.github/workflows/upload-assets.yml new file mode 100644 index 0000000..f24fbdd --- /dev/null +++ b/.github/workflows/upload-assets.yml @@ -0,0 +1,49 @@ +name: Upload Assets +on: + release: + types: [published] + +jobs: + build: + name: Upload Assets + runs-on: macOS-latest + env: + TMPDIR: /tmp/.methodnotificationcenter.xcframework.build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + ./scripts/xcframework.sh -output ${TMPDIR}/MethodNotificationCenter.xcframework + + - name: Create Zip + run: | + cd ${TMPDIR} + zip -rX MethodNotificationCenter.xcframework.zip MethodNotificationCenter.xcframework + + - name: Upload Zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ env.TMPDIR }}/MethodNotificationCenter.xcframework.zip + asset_name: MethodNotificationCenter.xcframework.zip + asset_content_type: application/zip + + - name: Create Tar + run: | + cd ${TMPDIR} + tar -zcvf MethodNotificationCenter.xcframework.tar.gz MethodNotificationCenter.xcframework + + - name: Upload Tar + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ env.TMPDIR }}/MethodNotificationCenter.xcframework.tar.gz + asset_name: MethodNotificationCenter.xcframework.tar.gz + asset_content_type: application/gzip diff --git a/.github/workflows/xcframework.yml b/.github/workflows/xcframework.yml new file mode 100644 index 0000000..a252e5f --- /dev/null +++ b/.github/workflows/xcframework.yml @@ -0,0 +1,17 @@ +name: XCFramework +on: [push, workflow_dispatch] + +jobs: + build: + name: Build + runs-on: macOS-latest + env: + TMPDIR: /tmp/.methodnotificationcenter.xcframework.build + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + ./scripts/xcframework.sh -output ${TMPDIR}/MethodNotificationCenter.xcframework diff --git a/.github/workflows/xcodebuild.yml b/.github/workflows/xcodebuild.yml new file mode 100644 index 0000000..487d4ee --- /dev/null +++ b/.github/workflows/xcodebuild.yml @@ -0,0 +1,110 @@ +name: Xcode Project +on: [push, workflow_dispatch] + +jobs: + ios: + name: iOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build iOS + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter" -destination "generic/platform=iOS" -configuration Debug + + - name: Build iOS Simulator + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter" -destination "generic/platform=iOS Simulator" -configuration Debug + + - name: Test + run: | + IOS_SIM="$(xcrun simctl list devices available | grep "iPhone [0-9]" | sort -rV | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#IOS_SIM}" == "0" ]; then + IOS_SIM = "iPhone 12 Pro" # Fallback Simulator + fi + + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter" -testPlan "MethodNotificationCenterTests" -destination "platform=iOS Simulator,name=$IOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + maccatalyst: + name: Mac Catalyst + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration Debug + + - name: Test + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter" -testPlan "MethodNotificationCenterTests" -destination "platform=macOS,variant=Mac Catalyst" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + macos: + name: macOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter macOS" -destination "generic/platform=macOS" -configuration Debug + + - name: Test + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter macOS" -testPlan "MethodNotificationCenter macOS Tests" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + tvos: + name: tvOS + runs-on: macOS-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build tvOS + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter tvOS" -destination "generic/platform=tvOS" -configuration Debug + + - name: Build tvOS Simulator + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter tvOS" -destination "generic/platform=tvOS Simulator" -configuration Debug + + - name: Test + run: | + TVOS_SIM="$(xcrun simctl list devices available | grep "Apple TV" | sort -V | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#TVOS_SIM}" == "0" ]; then + TVOS_SIM = "Apple TV" # Fallback Simulator + fi + + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter tvOS" -testPlan "MethodNotificationCenter tvOS Tests" -destination "platform=tvOS Simulator,name=$TVOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test + + watchos: + name: watchOS + runs-on: macOS-11 + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Build watchOS + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter watchOS" -destination "generic/platform=watchOS" -configuration Debug + + - name: Build watchOS Simulator + run: | + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter watchOS" -destination "generic/platform=watchOS Simulator" -configuration Debug + + - name: Test + run: | + WATCHOS_SIM="$(xcrun simctl list devices available | grep "Apple Watch" | sort -rV | head -n 1 | sed -E 's/(.+)[ ]*\([^)]*\)[ ]*\([^)]*\)/\1/' | awk '{$1=$1};1')" + if [ "${#WATCHOS_SIM}" == "0" ]; then + WATCHOS_SIM = "Apple Watch Series 6 - 44mm" # Fallback Simulator + fi + + xcodebuild -project MethodNotificationCenter.xcodeproj -scheme "MethodNotificationCenter watchOS" -testPlan "MethodNotificationCenter watchOS Tests" -destination "platform=watchOS Simulator,name=$WATCHOS_SIM" -configuration Debug ONLY_ACTIVE_ARCH=YES test diff --git a/.gitignore b/.gitignore index 84c83bb..39cffa0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ -.swiftpm -IDEWorkspaceChecks.plist -MethodNotificationCenter.xcodeproj/project.xcworkspace/xcuserdata +MethodNotificationCenter.xcodeproj/project.xcworkspace MethodNotificationCenter.xcodeproj/xcuserdata + +.build +.swiftpm +scripts/build diff --git a/.swiftlint.yml b/.swiftlint.yml index 80ae263..b503ff6 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,8 +1,9 @@ disabled_rules: - file_length - line_length + - cyclomatic_complexity - type_body_length - - function_body_length + - type_name opt_in_rules: - anyobject_protocol @@ -41,6 +42,7 @@ opt_in_rules: - multiple_closures_with_trailing_closure - nesting - notification_center_detachment + - number_separator - object_literal - operator_usage_whitespace - override_in_extension @@ -57,12 +59,6 @@ opt_in_rules: reporter: "xcode" -excluded: - - Tests/LinuxMain.swift - - Tests/HalfTests/XCTestManifests.swift - - Tests/CHalfTests/XCTestManifests.swift - identifier_name: excluded: - - pi - - _value + - i diff --git a/LICENSE b/LICENSE index 2d96682..5e01e5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2020 Joseph Newton +Copyright (c) 2021 Joe Newton Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/MethodNotificationCenter.podspec b/MethodNotificationCenter.podspec index 7f65fef..ceb3211 100644 --- a/MethodNotificationCenter.podspec +++ b/MethodNotificationCenter.podspec @@ -11,9 +11,10 @@ Pod::Spec.new do |s| s.license = "MIT" s.author = { "Joseph Newton" => "somerandomiosdev@gmail.com" } - s.ios.deployment_target = '11.0' + s.ios.deployment_target = '9.0' s.macos.deployment_target = '10.10' s.tvos.deployment_target = '9.0' + s.watchos.deployment_target = '2.0' s.source = { :git => "https://github.com/SomeRandomiOSDev/MethodNotificationCenter.git", :tag => s.version.to_s } s.source_files = 'Sources/**/*.{h,m,s}' @@ -21,11 +22,12 @@ Pod::Spec.new do |s| s.cocoapods_version = '>= 1.7.3' s.test_spec 'Tests' do |ts| - ts.ios.deployment_target = '11.0' - ts.macos.deployment_target = '10.10' - ts.tvos.deployment_target = '9.0' + ts.ios.deployment_target = '9.0' + ts.macos.deployment_target = '10.10' + ts.tvos.deployment_target = '9.0' + ts.watchos.deployment_target = '2.0' - ts.source_files = 'Tests/**/*.{m,swift}' + ts.source_files = 'Tests/**/*.{m,swift}' end end diff --git a/MethodNotificationCenter.xcodeproj/project.pbxproj b/MethodNotificationCenter.xcodeproj/project.pbxproj index 2eab8c0..304259d 100644 --- a/MethodNotificationCenter.xcodeproj/project.pbxproj +++ b/MethodNotificationCenter.xcodeproj/project.pbxproj @@ -7,11 +7,22 @@ objects = { /* Begin PBXAggregateTarget section */ - DDF7244C241756B200F58881 /* Run SwiftLint */ = { + DD2FBC27258BE8BB00DB3211 /* XCFramework */ = { isa = PBXAggregateTarget; - buildConfigurationList = DDF7244D241756B200F58881 /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */; + buildConfigurationList = DD2FBC2A258BE8BB00DB3211 /* Build configuration list for PBXAggregateTarget "XCFramework" */; buildPhases = ( - DDF72450241756B600F58881 /* Run SwiftLint */, + DD2FBC33258BE8C600DB3211 /* Build XCFramework */, + ); + dependencies = ( + ); + name = XCFramework; + productName = XCFramework; + }; + DD86D56423D11C4B0046E63E /* Run SwiftLint */ = { + isa = PBXAggregateTarget; + buildConfigurationList = DD86D56523D11C4B0046E63E /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */; + buildPhases = ( + DD86D56823D11C550046E63E /* Run SwiftLint */, ); dependencies = ( ); @@ -21,461 +32,633 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - DDB1DFF5240F67B600C20FED /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDB1DFEB240F67B600C20FED /* MethodNotificationCenter.framework */; }; - DDF7239B2414280200F58881 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF7238F2414280200F58881 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF7239C2414280200F58881 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF723902414280200F58881 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF7239E2414280200F58881 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723942414280200F58881 /* mnc-fowarding-x86_64.s */; }; - DDF7239F2414280200F58881 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723952414280200F58881 /* mnc-fowarding-arm64.s */; }; - DDF723A12414280200F58881 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF723972414280200F58881 /* MethodNotification.m */; }; - DDF723A22414280200F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723982414280200F58881 /* mnc-fowarding-simulator-x86_64.s */; }; - DDF723A42414280200F58881 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7239A2414280200F58881 /* MethodNotificationCenter.m */; }; - DDF723C32414329F00F58881 /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDF723BA2414329E00F58881 /* MethodNotificationCenter.framework */; }; - DDF723D2241432AF00F58881 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF7238F2414280200F58881 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF723D3241432AF00F58881 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF723902414280200F58881 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF723D4241432B500F58881 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF723972414280200F58881 /* MethodNotification.m */; }; - DDF723D5241432B500F58881 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7239A2414280200F58881 /* MethodNotificationCenter.m */; }; - DDF723D6241432B500F58881 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723942414280200F58881 /* mnc-fowarding-x86_64.s */; }; - DDF723D7241432B500F58881 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723952414280200F58881 /* mnc-fowarding-arm64.s */; }; - DDF723D8241432B500F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723982414280200F58881 /* mnc-fowarding-simulator-x86_64.s */; }; - DDF723E72414330700F58881 /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDF723DE2414330700F58881 /* MethodNotificationCenter.framework */; }; - DDF723F62414331A00F58881 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF723972414280200F58881 /* MethodNotification.m */; }; - DDF723F72414331A00F58881 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7239A2414280200F58881 /* MethodNotificationCenter.m */; }; - DDF723F82414331A00F58881 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723942414280200F58881 /* mnc-fowarding-x86_64.s */; }; - DDF723F92414331A00F58881 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723952414280200F58881 /* mnc-fowarding-arm64.s */; }; - DDF723FA2414331A00F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723982414280200F58881 /* mnc-fowarding-simulator-x86_64.s */; }; - DDF723FB2414331E00F58881 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF7238F2414280200F58881 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF723FC2414331E00F58881 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF723902414280200F58881 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF723FE2415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723FD2415F46900F58881 /* mnc-fowarding-simulator-i386.s */; }; - DDF723FF2415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723FD2415F46900F58881 /* mnc-fowarding-simulator-i386.s */; }; - DDF724002415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF723FD2415F46900F58881 /* mnc-fowarding-simulator-i386.s */; }; - DDF724022415F47400F58881 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724012415F47400F58881 /* mnc-fowarding-i386.s */; }; - DDF724032415F47400F58881 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724012415F47400F58881 /* mnc-fowarding-i386.s */; }; - DDF724042415F47400F58881 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724012415F47400F58881 /* mnc-fowarding-i386.s */; }; - DDF724062415F48300F58881 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724052415F48300F58881 /* mnc-fowarding-arm.s */; }; - DDF724072415F48300F58881 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724052415F48300F58881 /* mnc-fowarding-arm.s */; }; - DDF724082415F48300F58881 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDF724052415F48300F58881 /* mnc-fowarding-arm.s */; }; - DDF724252416A4C200F58881 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF724242416A4C200F58881 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF724262416A4C200F58881 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF724242416A4C200F58881 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF724272416A4C200F58881 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF724242416A4C200F58881 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDF7242A2416A53D00F58881 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF724292416A53D00F58881 /* MethodNotificationObservable.m */; }; - DDF7242B2416A53D00F58881 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF724292416A53D00F58881 /* MethodNotificationObservable.m */; }; - DDF7242C2416A53D00F58881 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF724292416A53D00F58881 /* MethodNotificationObservable.m */; }; - DDF724582417586800F58881 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDF724542417586800F58881 /* MethodNotificationCenterTests.swift */; }; - DDF724592417586800F58881 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDF724542417586800F58881 /* MethodNotificationCenterTests.swift */; }; - DDF7245A2417586800F58881 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDF724542417586800F58881 /* MethodNotificationCenterTests.swift */; }; - DDF7245D241758E100F58881 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7245C241758E100F58881 /* MethodNotificationCenterTests.m */; }; - DDF7245E241758E100F58881 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7245C241758E100F58881 /* MethodNotificationCenterTests.m */; }; - DDF7245F241758E100F58881 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF7245C241758E100F58881 /* MethodNotificationCenterTests.m */; }; + DD48BC98270E0DE800D842BC /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D5C423D11D140046E63E /* MethodNotificationCenter.framework */; }; + DD86D54723D11B3E0046E63E /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D53D23D11B3E0046E63E /* MethodNotificationCenter.framework */; }; + DD86D57923D11C860046E63E /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D57023D11C860046E63E /* MethodNotificationCenter.framework */; }; + DD86D59523D11CA00046E63E /* MethodNotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD86D58C23D11CA00046E63E /* MethodNotificationCenter.framework */; }; + DDDFA54127172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */; }; + DDDFA54227172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */; }; + DDDFA54327172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */; }; + DDDFA54427172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */; }; + DDDFA54527172E7A00B42F92 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */; }; + DDDFA54627172E7A00B42F92 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */; }; + DDDFA54727172E7A00B42F92 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */; }; + DDDFA54827172E7A00B42F92 /* MethodNotificationObservable.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */; }; + DDDFA54927172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */; }; + DDDFA54A27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */; }; + DDDFA54B27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */; }; + DDDFA54C27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */; }; + DDDFA54D27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */; }; + DDDFA54E27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */; }; + DDDFA54F27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */; }; + DDDFA55027172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */; }; + DDDFA55127172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */; }; + DDDFA55227172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */; }; + DDDFA55327172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */; }; + DDDFA55427172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */; }; + DDDFA55527172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */; }; + DDDFA55627172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */; }; + DDDFA55727172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */; }; + DDDFA55827172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */; }; + DDDFA55927172E7A00B42F92 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53827172E7900B42F92 /* MethodNotification.m */; }; + DDDFA55A27172E7A00B42F92 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53827172E7900B42F92 /* MethodNotification.m */; }; + DDDFA55B27172E7A00B42F92 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53827172E7900B42F92 /* MethodNotification.m */; }; + DDDFA55C27172E7A00B42F92 /* MethodNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53827172E7900B42F92 /* MethodNotification.m */; }; + DDDFA55D27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */; }; + DDDFA55E27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */; }; + DDDFA55F27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */; }; + DDDFA56027172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */; }; + DDDFA56127172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */; }; + DDDFA56227172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */; }; + DDDFA56327172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */; }; + DDDFA56427172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */; }; + DDDFA56527172E7A00B42F92 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */; }; + DDDFA56627172E7A00B42F92 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */; }; + DDDFA56727172E7A00B42F92 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */; }; + DDDFA56827172E7A00B42F92 /* MethodNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */; }; + DDDFA56927172E7A00B42F92 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53D27172E7900B42F92 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56A27172E7A00B42F92 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53D27172E7900B42F92 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56B27172E7A00B42F92 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53D27172E7900B42F92 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56C27172E7A00B42F92 /* MethodNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53D27172E7900B42F92 /* MethodNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56D27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56E27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA56F27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57027172E7A00B42F92 /* MethodNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57127172E7A00B42F92 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57227172E7A00B42F92 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57327172E7A00B42F92 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57427172E7A00B42F92 /* MethodNotificationObservable.h in Headers */ = {isa = PBXBuildFile; fileRef = DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDDFA57A27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */; }; + DDDFA57B27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */; }; + DDDFA57C27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */; }; + DDDFA57D27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */; }; + DDDFA57E27172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */; }; + DDDFA57F27172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */; }; + DDDFA58027172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */; }; + DDDFA58127172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - DDB1DFF6240F67B600C20FED /* PBXContainerItemProxy */ = { + DD48BC99270E0DE800D842BC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D5C323D11D140046E63E; + remoteInfo = "MethodNotificationCenter watchOS"; + }; + DD86D54823D11B3E0046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDB1DFE2240F67B600C20FED /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDB1DFEA240F67B600C20FED; + remoteGlobalIDString = DD86D53C23D11B3E0046E63E; remoteInfo = MethodNotificationCenter; }; - DDF723C42414329F00F58881 /* PBXContainerItemProxy */ = { + DD86D56923D11C6C0046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDB1DFE2240F67B600C20FED /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDF723B92414329E00F58881; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; + remoteInfo = "Run SwiftLint"; + }; + DD86D57A23D11C860046E63E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D56F23D11C860046E63E; remoteInfo = "MethodNotificationCenter macOS"; }; - DDF723E82414330700F58881 /* PBXContainerItemProxy */ = { + DD86D59623D11CA00046E63E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = DDB1DFE2240F67B600C20FED /* Project object */; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; proxyType = 1; - remoteGlobalIDString = DDF723DD2414330700F58881; + remoteGlobalIDString = DD86D58B23D11CA00046E63E; remoteInfo = "MethodNotificationCenter tvOS"; }; + DD86D5D823D11DC60046E63E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; + remoteInfo = "Run SwiftLint"; + }; + DD86D5DA23D11DC90046E63E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; + remoteInfo = "Run SwiftLint"; + }; + DD86D5DC23D11DCC0046E63E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DD86D53423D11B3E0046E63E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DD86D56423D11C4B0046E63E; + remoteInfo = "Run SwiftLint"; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - DDB1DFEB240F67B600C20FED /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDB1DFF4240F67B600C20FED /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF7238F2414280200F58881 /* MethodNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotification.h; sourceTree = ""; }; - DDF723902414280200F58881 /* MethodNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotificationCenter.h; sourceTree = ""; }; - DDF723912414280200F58881 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - DDF723942414280200F58881 /* mnc-fowarding-x86_64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-x86_64.s"; sourceTree = ""; }; - DDF723952414280200F58881 /* mnc-fowarding-arm64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-arm64.s"; sourceTree = ""; }; - DDF723972414280200F58881 /* MethodNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotification.m; sourceTree = ""; }; - DDF723982414280200F58881 /* mnc-fowarding-simulator-x86_64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-simulator-x86_64.s"; sourceTree = ""; }; - DDF7239A2414280200F58881 /* MethodNotificationCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationCenter.m; sourceTree = ""; }; - DDF723AA2414283B00F58881 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; - DDF723AB2414284200F58881 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - DDF723AC2414284A00F58881 /* MethodNotificationCenter-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "MethodNotificationCenter-Info.plist"; path = "Plists/MethodNotificationCenter-Info.plist"; sourceTree = ""; }; - DDF723AD2414284A00F58881 /* MethodNotificationCenterTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "MethodNotificationCenterTests-Info.plist"; path = "Plists/MethodNotificationCenterTests-Info.plist"; sourceTree = ""; }; - DDF723AF2414289800F58881 /* MethodNotificationCenter.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = MethodNotificationCenter.podspec; sourceTree = ""; }; - DDF723B0241429F500F58881 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - DDF723B124142A1E00F58881 /* codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = codecov.yml; sourceTree = ""; }; - DDF723B224142A7000F58881 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = ""; }; - DDF723BA2414329E00F58881 /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF723C22414329F00F58881 /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF723DE2414330700F58881 /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF723E62414330700F58881 /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF723FD2415F46900F58881 /* mnc-fowarding-simulator-i386.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-simulator-i386.s"; sourceTree = ""; }; - DDF724012415F47400F58881 /* mnc-fowarding-i386.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-i386.s"; sourceTree = ""; }; - DDF724052415F48300F58881 /* mnc-fowarding-arm.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-arm.s"; sourceTree = ""; }; - DDF724242416A4C200F58881 /* MethodNotificationObservable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotificationObservable.h; sourceTree = ""; }; - DDF724292416A53D00F58881 /* MethodNotificationObservable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationObservable.m; sourceTree = ""; }; - DDF724542417586800F58881 /* MethodNotificationCenterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MethodNotificationCenterTests.swift; sourceTree = ""; }; - DDF7245C241758E100F58881 /* MethodNotificationCenterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationCenterTests.m; sourceTree = ""; }; + DD17A9F9257744BC00D30599 /* scripts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = scripts; sourceTree = ""; }; + DD48BC94270E0DE800D842BC /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD48BC9F270E0F4500D842BC /* MethodNotificationCenterTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = MethodNotificationCenterTests.xctestplan; sourceTree = ""; }; + DD48BCA0270E0F9A00D842BC /* MethodNotificationCenter macOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "MethodNotificationCenter macOS Tests.xctestplan"; sourceTree = ""; }; + DD48BCA1270E0FE200D842BC /* MethodNotificationCenter tvOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "MethodNotificationCenter tvOS Tests.xctestplan"; sourceTree = ""; }; + DD48BCA2270E101D00D842BC /* MethodNotificationCenter watchOS Tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "MethodNotificationCenter watchOS Tests.xctestplan"; sourceTree = ""; }; + DD5D044A261FA56400BA0FC2 /* MethodNotificationCenterTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "MethodNotificationCenterTests-Info.plist"; path = "Plists/MethodNotificationCenterTests-Info.plist"; sourceTree = ""; }; + DD86D53D23D11B3E0046E63E /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D54123D11B3E0046E63E /* MethodNotificationCenter-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "MethodNotificationCenter-Info.plist"; path = "Plists/MethodNotificationCenter-Info.plist"; sourceTree = ""; }; + DD86D54623D11B3E0046E63E /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D57023D11C860046E63E /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D57823D11C860046E63E /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D58C23D11CA00046E63E /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D59423D11CA00046E63E /* MethodNotificationCenterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MethodNotificationCenterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D5C423D11D140046E63E /* MethodNotificationCenter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MethodNotificationCenter.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DD86D5DE23D22DB90046E63E /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; }; + DD86D5DF23D22DB90046E63E /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; }; + DD86D5E023D22DB90046E63E /* MethodNotificationCenter.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = MethodNotificationCenter.podspec; sourceTree = SOURCE_ROOT; }; + DD86D5E123D22DB90046E63E /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; }; + DD86D5E323D22DC30046E63E /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = SOURCE_ROOT; }; + DDA26DBD256EA4D700E1C6D7 /* workflows */ = {isa = PBXFileReference; lastKnownFileType = folder; name = workflows; path = .github/workflows; sourceTree = ""; }; + DDB1DE5C2405EEE300C20FED /* codecov.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = codecov.yml; sourceTree = ""; }; + DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-i386.s"; sourceTree = ""; }; + DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationObservable.m; sourceTree = ""; }; + DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-x86_64.s"; sourceTree = ""; }; + DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-arm64.s"; sourceTree = ""; }; + DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-arm.s"; sourceTree = ""; }; + DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-armv7.s"; sourceTree = ""; }; + DDDFA53827172E7900B42F92 /* MethodNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotification.m; sourceTree = ""; }; + DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-simulator-x86_64.s"; sourceTree = ""; }; + DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = "mnc-fowarding-simulator-i386.s"; sourceTree = ""; }; + DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationCenter.m; sourceTree = ""; }; + DDDFA53D27172E7900B42F92 /* MethodNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotification.h; sourceTree = ""; }; + DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotificationCenter.h; sourceTree = ""; }; + DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodNotificationObservable.h; sourceTree = ""; }; + DDDFA54027172E7900B42F92 /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; + DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MethodNotificationCenterTests.swift; sourceTree = ""; }; + DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MethodNotificationCenterTests.m; sourceTree = ""; }; + DDDFA5832717451500B42F92 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - DDB1DFE8240F67B600C20FED /* Frameworks */ = { + DD48BC91270E0DE800D842BC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DD48BC98270E0DE800D842BC /* MethodNotificationCenter.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D53A23D11B3E0046E63E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D54323D11B3E0046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DD86D54723D11B3E0046E63E /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDB1DFF1240F67B600C20FED /* Frameworks */ = { + DD86D56D23D11C860046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDB1DFF5240F67B600C20FED /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723B72414329E00F58881 /* Frameworks */ = { + DD86D57523D11C860046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DD86D57923D11C860046E63E /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723BF2414329F00F58881 /* Frameworks */ = { + DD86D58923D11CA00046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDF723C32414329F00F58881 /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723DB2414330700F58881 /* Frameworks */ = { + DD86D59123D11CA00046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DD86D59523D11CA00046E63E /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723E32414330700F58881 /* Frameworks */ = { + DD86D5C123D11D140046E63E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DDF723E72414330700F58881 /* MethodNotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - DDB1DFE1240F67B600C20FED = { + DD48BC9E270E0F1300D842BC /* Test Plans */ = { isa = PBXGroup; children = ( - DDB1DFED240F67B600C20FED /* MethodNotificationCenter */, - DDB1DFEC240F67B600C20FED /* Products */, + DD48BC9F270E0F4500D842BC /* MethodNotificationCenterTests.xctestplan */, + DD48BCA0270E0F9A00D842BC /* MethodNotificationCenter macOS Tests.xctestplan */, + DD48BCA1270E0FE200D842BC /* MethodNotificationCenter tvOS Tests.xctestplan */, + DD48BCA2270E101D00D842BC /* MethodNotificationCenter watchOS Tests.xctestplan */, ); + path = "Test Plans"; sourceTree = ""; }; - DDB1DFEC240F67B600C20FED /* Products */ = { + DD5D04E52621361600BA0FC2 /* MethodNotificationCenter */ = { isa = PBXGroup; children = ( - DDB1DFEB240F67B600C20FED /* MethodNotificationCenter.framework */, - DDB1DFF4240F67B600C20FED /* MethodNotificationCenterTests.xctest */, - DDF723BA2414329E00F58881 /* MethodNotificationCenter.framework */, - DDF723C22414329F00F58881 /* MethodNotificationCenterTests.xctest */, - DDF723DE2414330700F58881 /* MethodNotificationCenter.framework */, - DDF723E62414330700F58881 /* MethodNotificationCenterTests.xctest */, + DDDFA53C27172E7900B42F92 /* include */, + DDDFA5822717451500B42F92 /* module */, + DDDFA53127172E7900B42F92 /* src */, ); - name = Products; + path = MethodNotificationCenter; sourceTree = ""; }; - DDB1DFED240F67B600C20FED /* MethodNotificationCenter */ = { + DD86D53323D11B3E0046E63E = { isa = PBXGroup; children = ( - DDF7238C2414280200F58881 /* Sources */, - DDF723A52414281700F58881 /* Tests */, - DDF723A92414282B00F58881 /* Supporting Files */, + DD86D53F23D11B3E0046E63E /* MethodNotificationCenter */, + DD86D53E23D11B3E0046E63E /* Products */, ); - name = MethodNotificationCenter; sourceTree = ""; }; - DDF7238C2414280200F58881 /* Sources */ = { + DD86D53E23D11B3E0046E63E /* Products */ = { isa = PBXGroup; children = ( - DDF7238D2414280200F58881 /* MethodNotificationCenter */, + DD86D53D23D11B3E0046E63E /* MethodNotificationCenter.framework */, + DD86D54623D11B3E0046E63E /* MethodNotificationCenterTests.xctest */, + DD86D57023D11C860046E63E /* MethodNotificationCenter.framework */, + DD86D57823D11C860046E63E /* MethodNotificationCenterTests.xctest */, + DD86D58C23D11CA00046E63E /* MethodNotificationCenter.framework */, + DD86D59423D11CA00046E63E /* MethodNotificationCenterTests.xctest */, + DD86D5C423D11D140046E63E /* MethodNotificationCenter.framework */, + DD48BC94270E0DE800D842BC /* MethodNotificationCenterTests.xctest */, ); - path = Sources; + name = Products; sourceTree = ""; }; - DDF7238D2414280200F58881 /* MethodNotificationCenter */ = { + DD86D53F23D11B3E0046E63E /* MethodNotificationCenter */ = { isa = PBXGroup; children = ( - DDF7238E2414280200F58881 /* include */, - DDF723922414280200F58881 /* src */, + DDB1DE252405EE5F00C20FED /* Sources */, + DDB1DE502405EE9900C20FED /* Tests */, + DD86D55B23D11BA80046E63E /* Supporting Files */, ); - path = MethodNotificationCenter; + name = MethodNotificationCenter; sourceTree = ""; }; - DDF7238E2414280200F58881 /* include */ = { + DD86D55B23D11BA80046E63E /* Supporting Files */ = { isa = PBXGroup; children = ( - DDF7238F2414280200F58881 /* MethodNotification.h */, - DDF723902414280200F58881 /* MethodNotificationCenter.h */, - DDF724242416A4C200F58881 /* MethodNotificationObservable.h */, - DDF723912414280200F58881 /* module.modulemap */, + DD17A9F9257744BC00D30599 /* scripts */, + DDA26DBD256EA4D700E1C6D7 /* workflows */, + DD86D5E023D22DB90046E63E /* MethodNotificationCenter.podspec */, + DD86D5DF23D22DB90046E63E /* Package.swift */, + DDB1DE5C2405EEE300C20FED /* codecov.yml */, + DD86D5E323D22DC30046E63E /* .swiftlint.yml */, + DD86D5E123D22DB90046E63E /* README.md */, + DD86D5DE23D22DB90046E63E /* LICENSE */, + DD86D54123D11B3E0046E63E /* MethodNotificationCenter-Info.plist */, + DD5D044A261FA56400BA0FC2 /* MethodNotificationCenterTests-Info.plist */, ); - path = include; + name = "Supporting Files"; sourceTree = ""; }; - DDF723922414280200F58881 /* src */ = { + DDB1DE252405EE5F00C20FED /* Sources */ = { isa = PBXGroup; children = ( - DDF723972414280200F58881 /* MethodNotification.m */, - DDF7239A2414280200F58881 /* MethodNotificationCenter.m */, - DDF724292416A53D00F58881 /* MethodNotificationObservable.m */, - DDF723AE2414285300F58881 /* Assembly */, + DD5D04E52621361600BA0FC2 /* MethodNotificationCenter */, ); - path = src; + path = Sources; sourceTree = ""; }; - DDF723A52414281700F58881 /* Tests */ = { + DDB1DE502405EE9900C20FED /* Tests */ = { isa = PBXGroup; children = ( - DDF7245B241758E100F58881 /* MethodNotificationCenterObjCTests */, - DDF724532417586800F58881 /* MethodNotificationCenterSwiftTests */, + DDDFA57827172F0800B42F92 /* MethodNotificationCenterObjCTests */, + DDDFA57627172F0800B42F92 /* MethodNotificationCenterSwiftTests */, + DD48BC9E270E0F1300D842BC /* Test Plans */, ); path = Tests; sourceTree = ""; }; - DDF723A92414282B00F58881 /* Supporting Files */ = { + DDDFA53127172E7900B42F92 /* src */ = { isa = PBXGroup; children = ( - DDF723AF2414289800F58881 /* MethodNotificationCenter.podspec */, - DDF723AA2414283B00F58881 /* Package.swift */, - DDF723B124142A1E00F58881 /* codecov.yml */, - DDF723B224142A7000F58881 /* .swiftlint.yml */, - DDF723AB2414284200F58881 /* README.md */, - DDF723B0241429F500F58881 /* LICENSE */, - DDF723AC2414284A00F58881 /* MethodNotificationCenter-Info.plist */, - DDF723AD2414284A00F58881 /* MethodNotificationCenterTests-Info.plist */, + DDDFA53827172E7900B42F92 /* MethodNotification.m */, + DDDFA53B27172E7900B42F92 /* MethodNotificationCenter.m */, + DDDFA53327172E7900B42F92 /* MethodNotificationObservable.m */, + DDDFA57527172E9D00B42F92 /* Assembly */, ); - name = "Supporting Files"; + path = src; sourceTree = ""; }; - DDF723AE2414285300F58881 /* Assembly */ = { + DDDFA53C27172E7900B42F92 /* include */ = { isa = PBXGroup; children = ( - DDF724052415F48300F58881 /* mnc-fowarding-arm.s */, - DDF723952414280200F58881 /* mnc-fowarding-arm64.s */, - DDF724012415F47400F58881 /* mnc-fowarding-i386.s */, - DDF723942414280200F58881 /* mnc-fowarding-x86_64.s */, - DDF723FD2415F46900F58881 /* mnc-fowarding-simulator-i386.s */, - DDF723982414280200F58881 /* mnc-fowarding-simulator-x86_64.s */, + DDDFA53D27172E7900B42F92 /* MethodNotification.h */, + DDDFA53E27172E7900B42F92 /* MethodNotificationCenter.h */, + DDDFA53F27172E7900B42F92 /* MethodNotificationObservable.h */, + DDDFA54027172E7900B42F92 /* module.modulemap */, + ); + path = include; + sourceTree = ""; + }; + DDDFA57527172E9D00B42F92 /* Assembly */ = { + isa = PBXGroup; + children = ( + DDDFA53627172E7900B42F92 /* mnc-fowarding-arm.s */, + DDDFA53527172E7900B42F92 /* mnc-fowarding-arm64.s */, + DDDFA53727172E7900B42F92 /* mnc-fowarding-armv7.s */, + DDDFA53227172E7900B42F92 /* mnc-fowarding-i386.s */, + DDDFA53A27172E7900B42F92 /* mnc-fowarding-simulator-i386.s */, + DDDFA53927172E7900B42F92 /* mnc-fowarding-simulator-x86_64.s */, + DDDFA53427172E7900B42F92 /* mnc-fowarding-x86_64.s */, ); name = Assembly; sourceTree = ""; }; - DDF724532417586800F58881 /* MethodNotificationCenterSwiftTests */ = { + DDDFA57627172F0800B42F92 /* MethodNotificationCenterSwiftTests */ = { isa = PBXGroup; children = ( - DDF724542417586800F58881 /* MethodNotificationCenterTests.swift */, + DDDFA57727172F0800B42F92 /* MethodNotificationCenterTests.swift */, ); path = MethodNotificationCenterSwiftTests; sourceTree = ""; }; - DDF7245B241758E100F58881 /* MethodNotificationCenterObjCTests */ = { + DDDFA57827172F0800B42F92 /* MethodNotificationCenterObjCTests */ = { isa = PBXGroup; children = ( - DDF7245C241758E100F58881 /* MethodNotificationCenterTests.m */, + DDDFA57927172F0800B42F92 /* MethodNotificationCenterTests.m */, ); path = MethodNotificationCenterObjCTests; sourceTree = ""; }; + DDDFA5822717451500B42F92 /* module */ = { + isa = PBXGroup; + children = ( + DDDFA5832717451500B42F92 /* module.modulemap */, + ); + path = module; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - DDB1DFE6240F67B600C20FED /* Headers */ = { + DD86D53823D11B3E0046E63E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DDDFA56927172E7A00B42F92 /* MethodNotification.h in Headers */, + DDDFA56D27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */, + DDDFA57127172E7A00B42F92 /* MethodNotificationObservable.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D56B23D11C860046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DDF7239B2414280200F58881 /* MethodNotification.h in Headers */, - DDF7239C2414280200F58881 /* MethodNotificationCenter.h in Headers */, - DDF724252416A4C200F58881 /* MethodNotificationObservable.h in Headers */, + DDDFA56A27172E7A00B42F92 /* MethodNotification.h in Headers */, + DDDFA56E27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */, + DDDFA57227172E7A00B42F92 /* MethodNotificationObservable.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723B52414329E00F58881 /* Headers */ = { + DD86D58723D11CA00046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DDF723D2241432AF00F58881 /* MethodNotification.h in Headers */, - DDF723D3241432AF00F58881 /* MethodNotificationCenter.h in Headers */, - DDF724262416A4C200F58881 /* MethodNotificationObservable.h in Headers */, + DDDFA56B27172E7A00B42F92 /* MethodNotification.h in Headers */, + DDDFA56F27172E7A00B42F92 /* MethodNotificationCenter.h in Headers */, + DDDFA57327172E7A00B42F92 /* MethodNotificationObservable.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723D92414330700F58881 /* Headers */ = { + DD86D5BF23D11D140046E63E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DDF723FB2414331E00F58881 /* MethodNotification.h in Headers */, - DDF723FC2414331E00F58881 /* MethodNotificationCenter.h in Headers */, - DDF724272416A4C200F58881 /* MethodNotificationObservable.h in Headers */, + DDDFA56C27172E7A00B42F92 /* MethodNotification.h in Headers */, + DDDFA57027172E7A00B42F92 /* MethodNotificationCenter.h in Headers */, + DDDFA57427172E7A00B42F92 /* MethodNotificationObservable.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - DDB1DFEA240F67B600C20FED /* MethodNotificationCenter */ = { + DD48BC93270E0DE800D842BC /* MethodNotificationCenter watchOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDB1DFFF240F67B600C20FED /* Build configuration list for PBXNativeTarget "MethodNotificationCenter" */; + buildConfigurationList = DD48BC9D270E0DE800D842BC /* Build configuration list for PBXNativeTarget "MethodNotificationCenter watchOS Tests" */; buildPhases = ( - DDB1DFE6240F67B600C20FED /* Headers */, - DDB1DFE7240F67B600C20FED /* Sources */, - DDB1DFE8240F67B600C20FED /* Frameworks */, - DDB1DFE9240F67B600C20FED /* Resources */, + DD48BC90270E0DE800D842BC /* Sources */, + DD48BC91270E0DE800D842BC /* Frameworks */, + DD48BC92270E0DE800D842BC /* Resources */, ); buildRules = ( ); dependencies = ( + DD48BC9A270E0DE800D842BC /* PBXTargetDependency */, + ); + name = "MethodNotificationCenter watchOS Tests"; + productName = "MethodNotificationCenter watchOS Tests"; + productReference = DD48BC94270E0DE800D842BC /* MethodNotificationCenterTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DD86D53C23D11B3E0046E63E /* MethodNotificationCenter */ = { + isa = PBXNativeTarget; + buildConfigurationList = DD86D55123D11B3E0046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter" */; + buildPhases = ( + DD86D53823D11B3E0046E63E /* Headers */, + DD86D53923D11B3E0046E63E /* Sources */, + DD86D53A23D11B3E0046E63E /* Frameworks */, + DD86D53B23D11B3E0046E63E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD86D56A23D11C6C0046E63E /* PBXTargetDependency */, ); name = MethodNotificationCenter; productName = MethodNotificationCenter; - productReference = DDB1DFEB240F67B600C20FED /* MethodNotificationCenter.framework */; + productReference = DD86D53D23D11B3E0046E63E /* MethodNotificationCenter.framework */; productType = "com.apple.product-type.framework"; }; - DDB1DFF3240F67B600C20FED /* MethodNotificationCenterTests */ = { + DD86D54523D11B3E0046E63E /* MethodNotificationCenterTests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDB1E002240F67B600C20FED /* Build configuration list for PBXNativeTarget "MethodNotificationCenterTests" */; + buildConfigurationList = DD86D55423D11B3E0046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenterTests" */; buildPhases = ( - DDB1DFF0240F67B600C20FED /* Sources */, - DDB1DFF1240F67B600C20FED /* Frameworks */, - DDB1DFF2240F67B600C20FED /* Resources */, + DD86D54223D11B3E0046E63E /* Sources */, + DD86D54323D11B3E0046E63E /* Frameworks */, + DD86D54423D11B3E0046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDB1DFF7240F67B600C20FED /* PBXTargetDependency */, + DD86D54923D11B3E0046E63E /* PBXTargetDependency */, ); name = MethodNotificationCenterTests; productName = MethodNotificationCenterTests; - productReference = DDB1DFF4240F67B600C20FED /* MethodNotificationCenterTests.xctest */; + productReference = DD86D54623D11B3E0046E63E /* MethodNotificationCenterTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - DDF723B92414329E00F58881 /* MethodNotificationCenter macOS */ = { + DD86D56F23D11C860046E63E /* MethodNotificationCenter macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = DDF723CB2414329F00F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS" */; + buildConfigurationList = DD86D58123D11C870046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS" */; buildPhases = ( - DDF723B52414329E00F58881 /* Headers */, - DDF723B62414329E00F58881 /* Sources */, - DDF723B72414329E00F58881 /* Frameworks */, - DDF723B82414329E00F58881 /* Resources */, + DD86D56B23D11C860046E63E /* Headers */, + DD86D56C23D11C860046E63E /* Sources */, + DD86D56D23D11C860046E63E /* Frameworks */, + DD86D56E23D11C860046E63E /* Resources */, ); buildRules = ( ); dependencies = ( + DD86D5D923D11DC60046E63E /* PBXTargetDependency */, ); name = "MethodNotificationCenter macOS"; productName = "MethodNotificationCenter macOS"; - productReference = DDF723BA2414329E00F58881 /* MethodNotificationCenter.framework */; + productReference = DD86D57023D11C860046E63E /* MethodNotificationCenter.framework */; productType = "com.apple.product-type.framework"; }; - DDF723C12414329F00F58881 /* MethodNotificationCenter macOS Tests */ = { + DD86D57723D11C860046E63E /* MethodNotificationCenter macOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDF723CE2414329F00F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS Tests" */; + buildConfigurationList = DD86D58423D11C870046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS Tests" */; buildPhases = ( - DDF723BE2414329F00F58881 /* Sources */, - DDF723BF2414329F00F58881 /* Frameworks */, - DDF723C02414329F00F58881 /* Resources */, + DD86D57423D11C860046E63E /* Sources */, + DD86D57523D11C860046E63E /* Frameworks */, + DD86D57623D11C860046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDF723C52414329F00F58881 /* PBXTargetDependency */, + DD86D57B23D11C860046E63E /* PBXTargetDependency */, ); name = "MethodNotificationCenter macOS Tests"; productName = "MethodNotificationCenter macOSTests"; - productReference = DDF723C22414329F00F58881 /* MethodNotificationCenterTests.xctest */; + productReference = DD86D57823D11C860046E63E /* MethodNotificationCenterTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - DDF723DD2414330700F58881 /* MethodNotificationCenter tvOS */ = { + DD86D58B23D11CA00046E63E /* MethodNotificationCenter tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = DDF723EF2414330700F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS" */; + buildConfigurationList = DD86D59D23D11CA00046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS" */; buildPhases = ( - DDF723D92414330700F58881 /* Headers */, - DDF723DA2414330700F58881 /* Sources */, - DDF723DB2414330700F58881 /* Frameworks */, - DDF723DC2414330700F58881 /* Resources */, + DD86D58723D11CA00046E63E /* Headers */, + DD86D58823D11CA00046E63E /* Sources */, + DD86D58923D11CA00046E63E /* Frameworks */, + DD86D58A23D11CA00046E63E /* Resources */, ); buildRules = ( ); dependencies = ( + DD86D5DB23D11DC90046E63E /* PBXTargetDependency */, ); name = "MethodNotificationCenter tvOS"; productName = "MethodNotificationCenter tvOS"; - productReference = DDF723DE2414330700F58881 /* MethodNotificationCenter.framework */; + productReference = DD86D58C23D11CA00046E63E /* MethodNotificationCenter.framework */; productType = "com.apple.product-type.framework"; }; - DDF723E52414330700F58881 /* MethodNotificationCenter tvOS Tests */ = { + DD86D59323D11CA00046E63E /* MethodNotificationCenter tvOS Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = DDF723F22414330700F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS Tests" */; + buildConfigurationList = DD86D5A023D11CA00046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS Tests" */; buildPhases = ( - DDF723E22414330700F58881 /* Sources */, - DDF723E32414330700F58881 /* Frameworks */, - DDF723E42414330700F58881 /* Resources */, + DD86D59023D11CA00046E63E /* Sources */, + DD86D59123D11CA00046E63E /* Frameworks */, + DD86D59223D11CA00046E63E /* Resources */, ); buildRules = ( ); dependencies = ( - DDF723E92414330700F58881 /* PBXTargetDependency */, + DD86D59723D11CA00046E63E /* PBXTargetDependency */, ); name = "MethodNotificationCenter tvOS Tests"; productName = "MethodNotificationCenter tvOSTests"; - productReference = DDF723E62414330700F58881 /* MethodNotificationCenterTests.xctest */; + productReference = DD86D59423D11CA00046E63E /* MethodNotificationCenterTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + DD86D5C323D11D140046E63E /* MethodNotificationCenter watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = DD86D5C923D11D140046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter watchOS" */; + buildPhases = ( + DD86D5BF23D11D140046E63E /* Headers */, + DD86D5C023D11D140046E63E /* Sources */, + DD86D5C123D11D140046E63E /* Frameworks */, + DD86D5C223D11D140046E63E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD86D5DD23D11DCC0046E63E /* PBXTargetDependency */, + ); + name = "MethodNotificationCenter watchOS"; + productName = "MethodNotificationCenter watchOS"; + productReference = DD86D5C423D11D140046E63E /* MethodNotificationCenter.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - DDB1DFE2240F67B600C20FED /* Project object */ = { + DD86D53423D11B3E0046E63E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1130; + LastSwiftUpdateCheck = 1300; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = SomeRandomiOSDev; TargetAttributes = { - DDB1DFEA240F67B600C20FED = { - CreatedOnToolsVersion = 11.3.1; + DD2FBC27258BE8BB00DB3211 = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; + }; + DD48BC93270E0DE800D842BC = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; + }; + DD86D53C23D11B3E0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDB1DFF3240F67B600C20FED = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D54523D11B3E0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDF723B92414329E00F58881 = { - CreatedOnToolsVersion = 11.3.1; + DD86D56423D11C4B0046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDF723C12414329F00F58881 = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D56F23D11C860046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDF723DD2414330700F58881 = { - CreatedOnToolsVersion = 11.3.1; + DD86D57723D11C860046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDF723E52414330700F58881 = { - CreatedOnToolsVersion = 11.3.1; - LastSwiftMigration = 1130; + DD86D58B23D11CA00046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; - DDF7244C241756B200F58881 = { - CreatedOnToolsVersion = 11.3.1; + DD86D59323D11CA00046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; + }; + DD86D5C323D11D140046E63E = { + CreatedOnToolsVersion = 13.0; + LastSwiftMigration = 1300; }; }; }; - buildConfigurationList = DDB1DFE5240F67B600C20FED /* Build configuration list for PBXProject "MethodNotificationCenter" */; + buildConfigurationList = DD86D53723D11B3E0046E63E /* Build configuration list for PBXProject "MethodNotificationCenter" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -483,59 +666,76 @@ en, Base, ); - mainGroup = DDB1DFE1240F67B600C20FED; - productRefGroup = DDB1DFEC240F67B600C20FED /* Products */; + mainGroup = DD86D53323D11B3E0046E63E; + productRefGroup = DD86D53E23D11B3E0046E63E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - DDB1DFEA240F67B600C20FED /* MethodNotificationCenter */, - DDB1DFF3240F67B600C20FED /* MethodNotificationCenterTests */, - DDF723B92414329E00F58881 /* MethodNotificationCenter macOS */, - DDF723C12414329F00F58881 /* MethodNotificationCenter macOS Tests */, - DDF723DD2414330700F58881 /* MethodNotificationCenter tvOS */, - DDF723E52414330700F58881 /* MethodNotificationCenter tvOS Tests */, - DDF7244C241756B200F58881 /* Run SwiftLint */, + DD86D53C23D11B3E0046E63E /* MethodNotificationCenter */, + DD86D54523D11B3E0046E63E /* MethodNotificationCenterTests */, + DD86D56F23D11C860046E63E /* MethodNotificationCenter macOS */, + DD86D57723D11C860046E63E /* MethodNotificationCenter macOS Tests */, + DD86D58B23D11CA00046E63E /* MethodNotificationCenter tvOS */, + DD86D59323D11CA00046E63E /* MethodNotificationCenter tvOS Tests */, + DD86D5C323D11D140046E63E /* MethodNotificationCenter watchOS */, + DD48BC93270E0DE800D842BC /* MethodNotificationCenter watchOS Tests */, + DD86D56423D11C4B0046E63E /* Run SwiftLint */, + DD2FBC27258BE8BB00DB3211 /* XCFramework */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - DDB1DFE9240F67B600C20FED /* Resources */ = { + DD48BC92270E0DE800D842BC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D53B23D11B3E0046E63E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D54423D11B3E0046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDB1DFF2240F67B600C20FED /* Resources */ = { + DD86D56E23D11C860046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723B82414329E00F58881 /* Resources */ = { + DD86D57623D11C860046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723C02414329F00F58881 /* Resources */ = { + DD86D58A23D11CA00046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723DC2414330700F58881 /* Resources */ = { + DD86D59223D11CA00046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723E42414330700F58881 /* Resources */ = { + DD86D5C223D11D140046E63E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -545,7 +745,25 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - DDF72450241756B600F58881 /* Run SwiftLint */ = { + DD2FBC33258BE8C600DB3211 /* Build XCFramework */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Build XCFramework"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "${PROJECT_DIR}/scripts/xcframework.sh -configuration ${CONFIGURATION} -output \"${BUILD_DIR}/${CONFIGURATION}-universal/MethodNotificationCenter.xcframework\" \n"; + }; + DD86D56823D11C550046E63E /* Run SwiftLint */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -566,103 +784,215 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - DDB1DFE7240F67B600C20FED /* Sources */ = { + DD48BC90270E0DE800D842BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDDFA58127172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */, + DDDFA57D27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D53923D11B3E0046E63E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DDDFA55927172E7A00B42F92 /* MethodNotification.m in Sources */, + DDDFA54527172E7A00B42F92 /* MethodNotificationObservable.m in Sources */, + DDDFA56527172E7A00B42F92 /* MethodNotificationCenter.m in Sources */, + DDDFA55127172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */, + DDDFA56127172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */, + DDDFA54D27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */, + DDDFA55D27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */, + DDDFA54927172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */, + DDDFA55527172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */, + DDDFA54127172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DD86D54223D11B3E0046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF7239F2414280200F58881 /* mnc-fowarding-arm64.s in Sources */, - DDF7239E2414280200F58881 /* mnc-fowarding-x86_64.s in Sources */, - DDF723A22414280200F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */, - DDF7242A2416A53D00F58881 /* MethodNotificationObservable.m in Sources */, - DDF723FE2415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */, - DDF723A42414280200F58881 /* MethodNotificationCenter.m in Sources */, - DDF724062415F48300F58881 /* mnc-fowarding-arm.s in Sources */, - DDF723A12414280200F58881 /* MethodNotification.m in Sources */, - DDF724022415F47400F58881 /* mnc-fowarding-i386.s in Sources */, + DDDFA57E27172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */, + DDDFA57A27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDB1DFF0240F67B600C20FED /* Sources */ = { + DD86D56C23D11C860046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF7245D241758E100F58881 /* MethodNotificationCenterTests.m in Sources */, - DDF724582417586800F58881 /* MethodNotificationCenterTests.swift in Sources */, + DDDFA55A27172E7A00B42F92 /* MethodNotification.m in Sources */, + DDDFA54627172E7A00B42F92 /* MethodNotificationObservable.m in Sources */, + DDDFA56627172E7A00B42F92 /* MethodNotificationCenter.m in Sources */, + DDDFA55227172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */, + DDDFA56227172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */, + DDDFA54E27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */, + DDDFA55E27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */, + DDDFA54A27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */, + DDDFA55627172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */, + DDDFA54227172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723B62414329E00F58881 /* Sources */ = { + DD86D57423D11C860046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF723D5241432B500F58881 /* MethodNotificationCenter.m in Sources */, - DDF723D7241432B500F58881 /* mnc-fowarding-arm64.s in Sources */, - DDF723D8241432B500F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */, - DDF7242B2416A53D00F58881 /* MethodNotificationObservable.m in Sources */, - DDF723FF2415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */, - DDF723D6241432B500F58881 /* mnc-fowarding-x86_64.s in Sources */, - DDF724072415F48300F58881 /* mnc-fowarding-arm.s in Sources */, - DDF723D4241432B500F58881 /* MethodNotification.m in Sources */, - DDF724032415F47400F58881 /* mnc-fowarding-i386.s in Sources */, + DDDFA57F27172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */, + DDDFA57B27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723BE2414329F00F58881 /* Sources */ = { + DD86D58823D11CA00046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF7245E241758E100F58881 /* MethodNotificationCenterTests.m in Sources */, - DDF724592417586800F58881 /* MethodNotificationCenterTests.swift in Sources */, + DDDFA55B27172E7A00B42F92 /* MethodNotification.m in Sources */, + DDDFA54727172E7A00B42F92 /* MethodNotificationObservable.m in Sources */, + DDDFA56727172E7A00B42F92 /* MethodNotificationCenter.m in Sources */, + DDDFA55327172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */, + DDDFA56327172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */, + DDDFA54F27172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */, + DDDFA55F27172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */, + DDDFA54B27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */, + DDDFA55727172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */, + DDDFA54327172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723DA2414330700F58881 /* Sources */ = { + DD86D59023D11CA00046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF723F72414331A00F58881 /* MethodNotificationCenter.m in Sources */, - DDF723F92414331A00F58881 /* mnc-fowarding-arm64.s in Sources */, - DDF723FA2414331A00F58881 /* mnc-fowarding-simulator-x86_64.s in Sources */, - DDF7242C2416A53D00F58881 /* MethodNotificationObservable.m in Sources */, - DDF724002415F46900F58881 /* mnc-fowarding-simulator-i386.s in Sources */, - DDF723F82414331A00F58881 /* mnc-fowarding-x86_64.s in Sources */, - DDF724082415F48300F58881 /* mnc-fowarding-arm.s in Sources */, - DDF723F62414331A00F58881 /* MethodNotification.m in Sources */, - DDF724042415F47400F58881 /* mnc-fowarding-i386.s in Sources */, + DDDFA58027172F0800B42F92 /* MethodNotificationCenterTests.m in Sources */, + DDDFA57C27172F0800B42F92 /* MethodNotificationCenterTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDF723E22414330700F58881 /* Sources */ = { + DD86D5C023D11D140046E63E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DDF7245F241758E100F58881 /* MethodNotificationCenterTests.m in Sources */, - DDF7245A2417586800F58881 /* MethodNotificationCenterTests.swift in Sources */, + DDDFA55C27172E7A00B42F92 /* MethodNotification.m in Sources */, + DDDFA54827172E7A00B42F92 /* MethodNotificationObservable.m in Sources */, + DDDFA56827172E7A00B42F92 /* MethodNotificationCenter.m in Sources */, + DDDFA55427172E7A00B42F92 /* mnc-fowarding-arm.s in Sources */, + DDDFA56427172E7A00B42F92 /* mnc-fowarding-simulator-i386.s in Sources */, + DDDFA55027172E7A00B42F92 /* mnc-fowarding-arm64.s in Sources */, + DDDFA56027172E7A00B42F92 /* mnc-fowarding-simulator-x86_64.s in Sources */, + DDDFA54C27172E7A00B42F92 /* mnc-fowarding-x86_64.s in Sources */, + DDDFA55827172E7A00B42F92 /* mnc-fowarding-armv7.s in Sources */, + DDDFA54427172E7A00B42F92 /* mnc-fowarding-i386.s in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - DDB1DFF7240F67B600C20FED /* PBXTargetDependency */ = { + DD48BC9A270E0DE800D842BC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D5C323D11D140046E63E /* MethodNotificationCenter watchOS */; + targetProxy = DD48BC99270E0DE800D842BC /* PBXContainerItemProxy */; + }; + DD86D54923D11B3E0046E63E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D53C23D11B3E0046E63E /* MethodNotificationCenter */; + targetProxy = DD86D54823D11B3E0046E63E /* PBXContainerItemProxy */; + }; + DD86D56A23D11C6C0046E63E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D56923D11C6C0046E63E /* PBXContainerItemProxy */; + }; + DD86D57B23D11C860046E63E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D56F23D11C860046E63E /* MethodNotificationCenter macOS */; + targetProxy = DD86D57A23D11C860046E63E /* PBXContainerItemProxy */; + }; + DD86D59723D11CA00046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDB1DFEA240F67B600C20FED /* MethodNotificationCenter */; - targetProxy = DDB1DFF6240F67B600C20FED /* PBXContainerItemProxy */; + target = DD86D58B23D11CA00046E63E /* MethodNotificationCenter tvOS */; + targetProxy = DD86D59623D11CA00046E63E /* PBXContainerItemProxy */; }; - DDF723C52414329F00F58881 /* PBXTargetDependency */ = { + DD86D5D923D11DC60046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDF723B92414329E00F58881 /* MethodNotificationCenter macOS */; - targetProxy = DDF723C42414329F00F58881 /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5D823D11DC60046E63E /* PBXContainerItemProxy */; }; - DDF723E92414330700F58881 /* PBXTargetDependency */ = { + DD86D5DB23D11DC90046E63E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DDF723DD2414330700F58881 /* MethodNotificationCenter tvOS */; - targetProxy = DDF723E82414330700F58881 /* PBXContainerItemProxy */; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5DA23D11DC90046E63E /* PBXContainerItemProxy */; + }; + DD86D5DD23D11DCC0046E63E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DD86D56423D11C4B0046E63E /* Run SwiftLint */; + targetProxy = DD86D5DC23D11DCC0046E63E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - DDB1DFFD240F67B600C20FED /* Debug */ = { + DD2FBC28258BE8BB00DB3211 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + DD2FBC29258BE8BB00DB3211 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + DD48BC9B270E0DE800D842BC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcentertests; + PRODUCT_NAME = MethodNotificationCenterTests; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + }; + name = Debug; + }; + DD48BC9C270E0DE800D842BC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Plists/TestProjectTests-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.testprojecttests; + PRODUCT_NAME = TestProjectTests; + SDKROOT = watchos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + }; + name = Release; + }; + DD86D54F23D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -688,12 +1018,14 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; @@ -713,12 +1045,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TVOS_DEPLOYMENT_TARGET = 9.0; VERSIONING_SYSTEM = "apple-generic"; @@ -727,7 +1061,7 @@ }; name = Debug; }; - DDB1DFFE240F67B600C20FED /* Release */ = { + DD86D55023D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -753,12 +1087,14 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -772,11 +1108,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; TVOS_DEPLOYMENT_TARGET = 9.0; VALIDATE_PRODUCT = YES; @@ -786,9 +1124,11 @@ }; name = Release; }; - DDB1E000240F67B600C20FED /* Debug */ = { + DD86D55223D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -801,16 +1141,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; }; - DDB1E001240F67B600C20FED /* Release */ = { + DD86D55323D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -823,17 +1168,19 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; }; - DDB1E003240F67B600C20FED /* Debug */ = { + DD86D55523D11B3E0046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -843,16 +1190,14 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcentertests; PRODUCT_NAME = MethodNotificationCenterTests; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; }; - DDB1E004240F67B600C20FED /* Release */ = { + DD86D55623D11B3E0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -862,14 +1207,31 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcentertests; PRODUCT_NAME = MethodNotificationCenterTests; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; }; - DDF723CC2414329F00F58881 /* Debug */ = { + DD86D56623D11C4B0046E63E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + DD86D56723D11C4B0046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + DD86D58223D11C870046E63E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -883,16 +1245,21 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; - DDF723CD2414329F00F58881 /* Release */ = { + DD86D58323D11C870046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; @@ -906,17 +1273,20 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; }; name = Release; }; - DDF723CF2414329F00F58881 /* Debug */ = { + DD86D58523D11C870046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; @@ -925,7 +1295,6 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcentertests; PRODUCT_NAME = MethodNotificationCenterTests; SDKROOT = macosx; @@ -934,10 +1303,11 @@ }; name = Debug; }; - DDF723D02414329F00F58881 /* Release */ = { + DD86D58623D11C870046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; @@ -946,7 +1316,6 @@ "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcentertests; PRODUCT_NAME = MethodNotificationCenterTests; SDKROOT = macosx; @@ -954,9 +1323,11 @@ }; name = Release; }; - DDF723F02414330700F58881 /* Debug */ = { + DD86D59E23D11CA00046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -969,17 +1340,22 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Debug; }; - DDF723F12414330700F58881 /* Release */ = { + DD86D59F23D11CA00046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -992,18 +1368,21 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; PRODUCT_NAME = MethodNotificationCenter; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; }; name = Release; }; - DDF723F32414330700F58881 /* Debug */ = { + DD86D5A123D11CA00046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1017,14 +1396,14 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 13.2; }; name = Debug; }; - DDF723F42414330700F58881 /* Release */ = { + DD86D5A223D11CA00046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = "Plists/MethodNotificationCenterTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1037,102 +1416,169 @@ SDKROOT = appletvos; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 13.2; }; name = Release; }; - DDF7244E241756B200F58881 /* Debug */ = { + DD86D5CA23D11D140046E63E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Plists/MethodNotificationCenter-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; + PRODUCT_NAME = MethodNotificationCenter; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; }; name = Debug; }; - DDF7244F241756B200F58881 /* Release */ = { + DD86D5CB23D11D140046E63E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Plists/MethodNotificationCenter-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = Sources/MethodNotificationCenter/module/module.modulemap; + PRODUCT_BUNDLE_IDENTIFIER = com.somerandomiosdev.methodnotificationcenter; + PRODUCT_NAME = MethodNotificationCenter; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - DDB1DFE5240F67B600C20FED /* Build configuration list for PBXProject "MethodNotificationCenter" */ = { + DD2FBC2A258BE8BB00DB3211 /* Build configuration list for PBXAggregateTarget "XCFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD2FBC28258BE8BB00DB3211 /* Debug */, + DD2FBC29258BE8BB00DB3211 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DD48BC9D270E0DE800D842BC /* Build configuration list for PBXNativeTarget "MethodNotificationCenter watchOS Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD48BC9B270E0DE800D842BC /* Debug */, + DD48BC9C270E0DE800D842BC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DD86D53723D11B3E0046E63E /* Build configuration list for PBXProject "MethodNotificationCenter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD86D54F23D11B3E0046E63E /* Debug */, + DD86D55023D11B3E0046E63E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DD86D55123D11B3E0046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDB1DFFD240F67B600C20FED /* Debug */, - DDB1DFFE240F67B600C20FED /* Release */, + DD86D55223D11B3E0046E63E /* Debug */, + DD86D55323D11B3E0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDB1DFFF240F67B600C20FED /* Build configuration list for PBXNativeTarget "MethodNotificationCenter" */ = { + DD86D55423D11B3E0046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenterTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDB1E000240F67B600C20FED /* Debug */, - DDB1E001240F67B600C20FED /* Release */, + DD86D55523D11B3E0046E63E /* Debug */, + DD86D55623D11B3E0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDB1E002240F67B600C20FED /* Build configuration list for PBXNativeTarget "MethodNotificationCenterTests" */ = { + DD86D56523D11C4B0046E63E /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDB1E003240F67B600C20FED /* Debug */, - DDB1E004240F67B600C20FED /* Release */, + DD86D56623D11C4B0046E63E /* Debug */, + DD86D56723D11C4B0046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDF723CB2414329F00F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS" */ = { + DD86D58123D11C870046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDF723CC2414329F00F58881 /* Debug */, - DDF723CD2414329F00F58881 /* Release */, + DD86D58223D11C870046E63E /* Debug */, + DD86D58323D11C870046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDF723CE2414329F00F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS Tests" */ = { + DD86D58423D11C870046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter macOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDF723CF2414329F00F58881 /* Debug */, - DDF723D02414329F00F58881 /* Release */, + DD86D58523D11C870046E63E /* Debug */, + DD86D58623D11C870046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDF723EF2414330700F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS" */ = { + DD86D59D23D11CA00046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDF723F02414330700F58881 /* Debug */, - DDF723F12414330700F58881 /* Release */, + DD86D59E23D11CA00046E63E /* Debug */, + DD86D59F23D11CA00046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDF723F22414330700F58881 /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS Tests" */ = { + DD86D5A023D11CA00046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter tvOS Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDF723F32414330700F58881 /* Debug */, - DDF723F42414330700F58881 /* Release */, + DD86D5A123D11CA00046E63E /* Debug */, + DD86D5A223D11CA00046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDF7244D241756B200F58881 /* Build configuration list for PBXAggregateTarget "Run SwiftLint" */ = { + DD86D5C923D11D140046E63E /* Build configuration list for PBXNativeTarget "MethodNotificationCenter watchOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDF7244E241756B200F58881 /* Debug */, - DDF7244F241756B200F58881 /* Release */, + DD86D5CA23D11D140046E63E /* Debug */, + DD86D5CB23D11D140046E63E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = DDB1DFE2240F67B600C20FED /* Project object */; + rootObject = DD86D53423D11B3E0046E63E /* Project object */; } diff --git a/MethodNotificationCenter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MethodNotificationCenter.xcodeproj/project.xcworkspace/contents.xcworkspacedata index ff38d7e..919434a 100644 --- a/MethodNotificationCenter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/MethodNotificationCenter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS Tests.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS Tests.xcscheme index 305c837..82185b7 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS Tests.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS Tests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS.xcscheme index 3283e60..9f04001 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter macOS.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -27,18 +27,12 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS Tests.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS Tests.xcscheme index 8ec30d8..9091879 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS Tests.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS Tests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS.xcscheme index ef46dbf..ba659c0 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter tvOS.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -27,18 +27,12 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS Tests.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS Tests.xcscheme new file mode 100644 index 0000000..b49cbae --- /dev/null +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS Tests.xcscheme @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS.xcscheme new file mode 100644 index 0000000..18c454e --- /dev/null +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter watchOS.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter.xcscheme index 93429e0..9369813 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenter.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -27,18 +27,12 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenterTests.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenterTests.xcscheme index 97aedc5..06f97c9 100644 --- a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenterTests.xcscheme +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/MethodNotificationCenterTests.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "1300" + version = "1.7"> @@ -16,18 +16,24 @@ + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme new file mode 100644 index 0000000..b5c291a --- /dev/null +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/Run SwiftLint.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme new file mode 100644 index 0000000..e3a0c5d --- /dev/null +++ b/MethodNotificationCenter.xcodeproj/xcshareddata/xcschemes/XCFramework.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Package.swift b/Package.swift index 5cd638d..1fc0dde 100644 --- a/Package.swift +++ b/Package.swift @@ -5,13 +5,14 @@ let package = Package( name: "MethodNotificationCenter", platforms: [ - .iOS("11.0"), + .iOS("9.0"), .macOS("10.10"), - .tvOS("9.0") + .tvOS("9.0"), + .watchOS("2.0") ], products: [ - .library(name: "MethodNotificationCenter", targets: ["MethodNotificationCenter"]), + .library(name: "MethodNotificationCenter", targets: ["MethodNotificationCenter"]) ], targets: [ diff --git a/README.md b/README.md index 7e1b08d..2ad7dc2 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,33 @@ MethodNotificationCenter ======== Objective-C Runtime Injection +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d30d31c29f17449481b97a04610ff5b9)](https://app.codacy.com/app/SomeRandomiOSDev/MethodNotificationCenter?utm_source=github.com&utm_medium=referral&utm_content=SomeRandomiOSDev/MethodNotificationCenter&utm_campaign=Badge_Grade_Dashboard) [![License MIT](https://img.shields.io/cocoapods/l/MethodNotificationCenter.svg)](https://cocoapods.org/pods/MethodNotificationCenter) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/MethodNotificationCenter.svg)](https://cocoapods.org/pods/MethodNotificationCenter) -[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/MethodNotificationCenter.svg)](https://cocoapods.org/pods/MethodNotificationCenter) +[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Platform](https://img.shields.io/cocoapods/p/MethodNotificationCenter.svg)](https://cocoapods.org/pods/MethodNotificationCenter) -![Build](https://github.com/SomeRandomiOSDev/MethodNotificationCenter/workflows/Build/badge.svg) [![Code Coverage](https://codecov.io/gh/SomeRandomiOSDev/MethodNotificationCenter/branch/master/graph/badge.svg)](https://codecov.io/gh/SomeRandomiOSDev/MethodNotificationCenter) -[![Codacy](https://api.codacy.com/project/badge/Grade/8ad52c117e4a46d9aa4699d22fc0bf49)](https://app.codacy.com/app/SomeRandomiOSDev/MethodNotificationCenter?utm_source=github.com&utm_medium=referral&utm_content=SomeRandomiOSDev/MethodNotificationCenter&utm_campaign=Badge_Grade_Dashboard) + +![Swift Package](https://github.com/SomeRandomiOSDev/MethodNotificationCenter/workflows/Swift%20Package/badge.svg) +![Xcode Project](https://github.com/SomeRandomiOSDev/MethodNotificationCenter/workflows/Xcode%20Project/badge.svg) +![Cocoapods](https://github.com/SomeRandomiOSDev/MethodNotificationCenter/workflows/Cocoapods/badge.svg) +![Carthage](https://github.com/SomeRandomiOSDev/MethodNotificationCenter/workflows/Carthage/badge.svg) **MethodNotificationCenter** is a lightweight framework for performing Objective-C runtime method injection for iOS, macOS, and tvOS. +Purpose +-------- + +The purpose of this library is for being able to explore and understand the intricacies of the Objective-C runtime and the methods/APIs provided by Apple's libraries. + +This library allows one to be notified, in a fashion very similar to Foundation's own `NSNotificationCenter`, before and after a given method is called on a particular object. + +It should be noted that this library is for _educational purposes_ only. The way in which this library operates not only makes it volatile and unsuitable to production releases, but use of it would likely not pass Apple's App Store review (untested). + Installation -------- -**MethodNotificationCenter** is available through [CocoaPods](https://cocoapods.org), [Carthage](https://github.com/Carthage/Carthage) and the [Swift Package Manager](https://swift.org/package-manager/). +**MethodNotificationCenter** is available through [CocoaPods](https://cocoapods.org), [Carthage](https://github.com/Carthage/Carthage) and the [Swift Package Manager](https://swift.org/package-manager/). To install via CocoaPods, simply add the following line to your Podfile: @@ -32,18 +45,9 @@ github "SomeRandomiOSDev/MethodNotificationCenter" To install via the Swift Package Manager add the following line to your `Package.swift` file's `dependencies`: ```swift -.package(url: "https://github.com/SomeRandomiOSDev/MethodNotificationCenter.git", from: "0.1.0") +.package(url: "https://github.com/SomeRandomiOSDev/MethodNotificationCenter.git", from: "1.0.0") ``` -Purpose --------- - -The purpose of this library is for being able to explore and understand the intricacies of the Objective-C runtime and the methods/APIs provided by Apple's libraries. - -This library allows one to be notified, in a fashion very similar to Foundation's own `NSNotificationCenter`, before and after a given method is called on a particular object. - -It should be noted that this library is for _educational purposes_ only. The way in which this library operates not only makes it volatile and unsuitable to production releases, but use of it would likely not pass Apple's App Store review (untested). - Usage -------- @@ -103,8 +107,7 @@ Limitations There are some notable limitations to the capabilities of this library: * Method notifications aren't sent recursively. That is, you'll receive a notification for the "top-level" call of the given method, but if the method (or any of its internal method calls) calls the same method a notification will _not_ be sent for that. -* Due to optimizations made by the Swift compiler, Swift calls to methods written in Swift (but annotated with the `@objc` attribute) are usually hard-coded by the compiler and don't use the Objective-C runtime, which prevent notifications from being sent. Classes written in Objective-C and called from Swift (or vice-versa) shouldn't have this issue. See `Tests/MethodNotificationCenterTests/MethodNotificationCenterTests.swift` for examples. -* Due to being unable to resolve the arm assembly error `unsupported relocation on symbol` armv7* architectures are unsupported (iOS < 11.0 & watchOS) +* Due to optimizations made by the Swift compiler, Swift calls to methods written in Swift (but annotated with the `@objc` attribute) are usually hard-coded by the compiler and don't use the Objective-C runtime, which prevent notifications from being sent. Classes written in Objective-C and called from Swift (or vice-versa) shouldn't have this issue. See `Tests/MethodNotificationCenterTests/MethodNotificationCenterSwiftTests/MethodNotificationCenterTests.swift` for examples. Contributing -------- @@ -114,7 +117,7 @@ If you have need for a specific feature or you encounter a bug, please open an i Author -------- -Joseph Newton, somerandomiosdev@gmail.com +Joe Newton, somerandomiosdev@gmail.com License -------- diff --git a/Sources/MethodNotificationCenter/include/MethodNotification.h b/Sources/MethodNotificationCenter/include/MethodNotification.h index 4178fe0..af400b3 100644 --- a/Sources/MethodNotificationCenter/include/MethodNotification.h +++ b/Sources/MethodNotificationCenter/include/MethodNotification.h @@ -2,7 +2,7 @@ // MethodNotification.h // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import diff --git a/Sources/MethodNotificationCenter/include/MethodNotificationCenter.h b/Sources/MethodNotificationCenter/include/MethodNotificationCenter.h index b3d6453..8839009 100644 --- a/Sources/MethodNotificationCenter/include/MethodNotificationCenter.h +++ b/Sources/MethodNotificationCenter/include/MethodNotificationCenter.h @@ -2,16 +2,15 @@ // MethodNotificationCenter.h // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import -#import "MethodNotification.h" -#import "MethodNotificationObservable.h" - NS_ASSUME_NONNULL_BEGIN +@class MethodNotification, MethodNotificationObservable; + @interface MethodNotificationCenter: NSObject + (MethodNotificationObservable *)addObserverForSelector:(SEL)selector object:(__kindof NSObject *)object callback:(void (^)(MethodNotification *))callback; diff --git a/Sources/MethodNotificationCenter/include/MethodNotificationObservable.h b/Sources/MethodNotificationCenter/include/MethodNotificationObservable.h index 6d90a87..8d9f33e 100644 --- a/Sources/MethodNotificationCenter/include/MethodNotificationObservable.h +++ b/Sources/MethodNotificationCenter/include/MethodNotificationObservable.h @@ -2,7 +2,7 @@ // MethodNotificationObservable.h // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import diff --git a/Sources/MethodNotificationCenter/module/module.modulemap b/Sources/MethodNotificationCenter/module/module.modulemap new file mode 100644 index 0000000..2b8e078 --- /dev/null +++ b/Sources/MethodNotificationCenter/module/module.modulemap @@ -0,0 +1,5 @@ +framework module MethodNotificationCenter { + header "MethodNotificationCenter.h" + header "MethodNotificationObservable.h" + header "MethodNotification.h" +} diff --git a/Sources/MethodNotificationCenter/src/MethodNotification.m b/Sources/MethodNotificationCenter/src/MethodNotification.m index b45f41b..4e52299 100644 --- a/Sources/MethodNotificationCenter/src/MethodNotification.m +++ b/Sources/MethodNotificationCenter/src/MethodNotification.m @@ -2,7 +2,7 @@ // MethodNotification.m // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import "MethodNotification.h" diff --git a/Sources/MethodNotificationCenter/src/MethodNotificationCenter.m b/Sources/MethodNotificationCenter/src/MethodNotificationCenter.m index 56e7dc7..7a42660 100644 --- a/Sources/MethodNotificationCenter/src/MethodNotificationCenter.m +++ b/Sources/MethodNotificationCenter/src/MethodNotificationCenter.m @@ -2,11 +2,13 @@ // MethodNotificationCenter.m // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import "MethodNotificationCenter.h" #import "MethodNotificationObservable.h" +#import "MethodNotification.h" + #import #import diff --git a/Sources/MethodNotificationCenter/src/MethodNotificationObservable.m b/Sources/MethodNotificationCenter/src/MethodNotificationObservable.m index cedb476..f9df485 100644 --- a/Sources/MethodNotificationCenter/src/MethodNotificationObservable.m +++ b/Sources/MethodNotificationCenter/src/MethodNotificationObservable.m @@ -2,7 +2,7 @@ // MethodNotificationObservable.m // MethodNotificationCenter // -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // #import "MethodNotificationObservable.h" diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-arm.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-arm.s index 96a0c68..bb028c0 100644 --- a/Sources/MethodNotificationCenter/src/mnc-fowarding-arm.s +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-arm.s @@ -1,6 +1,6 @@ // Copied from https://opensource.apple.com/source/objc4/objc4-779.1/ -#ifdef __arm__ +#if defined(__arm__) && !(defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_7K__)) #include .macro STATIC_ENTRY /*name*/ diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-armv7.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-armv7.s new file mode 100644 index 0000000..cc5b818 --- /dev/null +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-armv7.s @@ -0,0 +1,26 @@ +#if defined(__arm__) && (defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_7K__)) +#include + +.macro STATIC_ENTRY /*name*/ + .text + .thumb + .align 5 + .private_extern $0 + .thumb_func +$0: +.endmacro + +.macro END_ENTRY /* name */ +LExit$0: +.endmacro + + + +STATIC_ENTRY __mnc_msgForward +// Method cache version + +b __objc_msgForward + +END_ENTRY __mnc_msgForward + +#endif diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-i386.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-i386.s index 14a2e50..c69bd47 100644 --- a/Sources/MethodNotificationCenter/src/mnc-fowarding-i386.s +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-i386.s @@ -15,7 +15,7 @@ $0: -STATIC_ENTRY __objc_msgForward_impcache +STATIC_ENTRY __mnc_msgForward // Method cache version // THIS IS NOT A CALLABLE C FUNCTION diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-i386.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-i386.s index d2ca14d..cbae646 100644 --- a/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-i386.s +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-i386.s @@ -16,7 +16,7 @@ LExit$0: -STATIC_ENTRY __objc_msgForward_impcache +STATIC_ENTRY __mnc_msgForward // Method cache version // THIS IS NOT A CALLABLE C FUNCTION diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-x86_64.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-x86_64.s index 2a4afae..d459f41 100644 --- a/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-x86_64.s +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-simulator-x86_64.s @@ -1,7 +1,7 @@ // Copied from https://opensource.apple.com/source/objc4/objc4-779.1/ #include -#if __x86_64__ && TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC +#if __x86_64__ && TARGET_OS_SIMULATOR && !(defined(TARGET_OS_IOSMAC) && TARGET_OS_IOSMAC) .macro STATIC_ENTRY .text diff --git a/Sources/MethodNotificationCenter/src/mnc-fowarding-x86_64.s b/Sources/MethodNotificationCenter/src/mnc-fowarding-x86_64.s index d995ffc..4fd2594 100644 --- a/Sources/MethodNotificationCenter/src/mnc-fowarding-x86_64.s +++ b/Sources/MethodNotificationCenter/src/mnc-fowarding-x86_64.s @@ -1,7 +1,7 @@ // Copied from https://opensource.apple.com/source/objc4/objc4-779.1/ #include -#if __x86_64__ && !(TARGET_OS_SIMULATOR && !TARGET_OS_IOSMAC) +#if __x86_64__ && !(TARGET_OS_SIMULATOR && !(defined(TARGET_OS_IOSMAC) && TARGET_OS_IOSMAC)) .macro STATIC_ENTRY .text diff --git a/Tests/MethodNotificationCenterObjCTests/MethodNotificationCenterTests.m b/Tests/MethodNotificationCenterObjCTests/MethodNotificationCenterTests.m index 8d2181d..9e358ec 100644 --- a/Tests/MethodNotificationCenterObjCTests/MethodNotificationCenterTests.m +++ b/Tests/MethodNotificationCenterObjCTests/MethodNotificationCenterTests.m @@ -2,12 +2,13 @@ // MethodNotificationCenterTests.m // MethodNotificationCenterTests // -// Created by Joseph Newton on 3/7/20. -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // -#import @import MethodNotificationCenter; +@import XCTest; + +// MARK: - TestClass1 Interface @interface TestClass1: NSObject @property (nonatomic, assign) NSInteger value; @@ -16,11 +17,17 @@ - (void)incrementBy2; - (void)noop; @end +// MARK: - MethodNotificationCenterTests Interface + @interface MethodNotificationCenterTests : XCTestCase @end +// MARK: - MethodNotificationCenterTests Implementation + @implementation MethodNotificationCenterTests +// MARK: Test Methods + - (void)testRecivingNotifications { TestClass1 *test = [[TestClass1 alloc] init]; @@ -178,6 +185,8 @@ - (void)testInvalidateObserver { @end +// MARK: - TestClass1 Implementation + @implementation TestClass1 @synthesize value = _value; diff --git a/Tests/MethodNotificationCenterSwiftTests/MethodNotificationCenterTests.swift b/Tests/MethodNotificationCenterSwiftTests/MethodNotificationCenterTests.swift index 58aaaff..30a9399 100644 --- a/Tests/MethodNotificationCenterSwiftTests/MethodNotificationCenterTests.swift +++ b/Tests/MethodNotificationCenterSwiftTests/MethodNotificationCenterTests.swift @@ -2,28 +2,18 @@ // MethodNotificationCenterTests.swift // MethodNotificationCenterTests // -// Created by Joseph Newton on 3/9/20. -// Copyright © 2020 SomeRandomiOSDev. All rights reserved. +// Copyright © 2021 SomeRandomiOSDev. All rights reserved. // import MethodNotificationCenter import XCTest -@objc class TestClass1: NSObject { - var value: Int = 0 - @objc func increment() { - value += 1 - } - @objc func incrementBy2() { - value += 2 - } - @objc func noop() { - /* Nothing to do */ - } -} +// MARK: - MethodNotificationCenterTests Definition class MethodNotificationCenterTests: XCTestCase { + // MARK: Test Methods + func testRecivingNotifications1() { let test = TestClass1() let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in @@ -39,13 +29,6 @@ class MethodNotificationCenterTests: XCTestCase { MethodNotificationCenter.removeObserver(observer) } - @objc class TestClass2: NSObject { - var value: Int = 0 - @objc func increment() { - value += 1 - } - } - func testRecivingNotifications2() { let test = TestClass2() let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in @@ -62,13 +45,6 @@ class MethodNotificationCenterTests: XCTestCase { } func testRecivingNotifications3() { - @objc class TestClass3: NSObject { - var value: Int = 0 - @objc func increment() { - value += 1 - } - } - let test = TestClass3() let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 2)) @@ -87,11 +63,11 @@ class MethodNotificationCenterTests: XCTestCase { let test = TestClass1() let test2 = TestClass1() - let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test) { notification in + let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 2)) test.value += 1 } - let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test2) { notification in + let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test2) { notification in XCTAssertEqual(test2.value, (notification.isPriorToMethodCall ? 0 : 2)) test2.value += 1 } @@ -112,11 +88,11 @@ class MethodNotificationCenterTests: XCTestCase { func testMultipleNotificationsOnSameObject() { let test = TestClass1() - let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test) { notification in + let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 2)) test.value += 1 } - let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object:test) { notification in + let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 3 : 6)) test.value += 1 } @@ -142,19 +118,19 @@ class MethodNotificationCenterTests: XCTestCase { let test = TestClass1() let test2 = TestClass1() - let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test) { notification in + let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 2)) test.value += 1 } - let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object:test) { notification in + let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 3 : 6)) test.value += 1 } - let observer3 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test2) { notification in + let observer3 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test2) { notification in XCTAssertEqual(test2.value, (notification.isPriorToMethodCall ? 0 : 2)) test2.value += 1 } - let observer4 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object:test2) { notification in + let observer4 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.incrementBy2), object: test2) { notification in XCTAssertEqual(test2.value, (notification.isPriorToMethodCall ? 3 : 6)) test2.value += 1 } @@ -194,24 +170,24 @@ class MethodNotificationCenterTests: XCTestCase { func testDuplicateNotificationsOnSameObject() { let test = TestClass1() - let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object:test) { notification in + let observer = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 4)) test.value += 1 } - let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object:test) { notification in + let observer2 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 1 : 5)) test.value += 1 } - let observer3 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object:test) { notification in + let observer3 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 2 : 6)) test.value += 1 } - let observer4 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object:test) { notification in + let observer4 = MethodNotificationCenter.addObserver(for: #selector(TestClass1.noop), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 3 : 7)) test.value += 1 } - XCTAssertEqual(test.value, 0); + XCTAssertEqual(test.value, 0) test.perform(#selector(TestClass1.noop)) //test.noop() // Can't call directly in Swift as the complier will skip the ObjC runtime and call the Swift function directly XCTAssertEqual(test.value, 8) @@ -224,11 +200,11 @@ class MethodNotificationCenterTests: XCTestCase { func testInvalidateObserverOnDealloc() { let test = TestClass1() - - let unmanagedObserver = Unmanaged.passUnretained(MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object:test) { notification in + let unmanagedObserver = Unmanaged.passUnretained(MethodNotificationCenter.addObserver(for: #selector(TestClass1.increment), object: test) { notification in XCTAssertEqual(test.value, (notification.isPriorToMethodCall ? 0 : 2)) test.value += 1 - }.invalidateOnDealloc()) + } + .invalidateOnDealloc()) XCTAssertEqual(test.value, 0) test.perform(#selector(TestClass1.increment)) @@ -240,3 +216,39 @@ class MethodNotificationCenterTests: XCTestCase { XCTAssertEqual(test.value, 4) } } + +// MARK: - TestClass1 Definition + +@objc class TestClass1: NSObject { + var value: Int = 0 + + @objc func increment() { + value += 1 + } + @objc func incrementBy2() { + value += 2 + } + @objc func noop() { + /* Nothing to do */ + } +} + +// MARK: - TestClass2 Definition + +@objc class TestClass2: NSObject { + var value: Int = 0 + + @objc func increment() { + value += 1 + } +} + +// MARK: - TestClass3 Definition + +@objc class TestClass3: NSObject { + var value: Int = 0 + + @objc func increment() { + value += 1 + } +} diff --git a/Tests/Test Plans/MethodNotificationCenter macOS Tests.xctestplan b/Tests/Test Plans/MethodNotificationCenter macOS Tests.xctestplan new file mode 100644 index 0000000..78faffa --- /dev/null +++ b/Tests/Test Plans/MethodNotificationCenter macOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "E83DAAAA-7E95-423A-B5C0-11038E54B4FC", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D56F23D11C860046E63E", + "name" : "MethodNotificationCenter macOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D57723D11C860046E63E", + "name" : "MethodNotificationCenter macOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/MethodNotificationCenter tvOS Tests.xctestplan b/Tests/Test Plans/MethodNotificationCenter tvOS Tests.xctestplan new file mode 100644 index 0000000..1bb4ddf --- /dev/null +++ b/Tests/Test Plans/MethodNotificationCenter tvOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "A045C1A3-FB6D-4C3E-9102-7A44F742221D", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D58B23D11CA00046E63E", + "name" : "MethodNotificationCenter tvOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D59323D11CA00046E63E", + "name" : "MethodNotificationCenter tvOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/MethodNotificationCenter watchOS Tests.xctestplan b/Tests/Test Plans/MethodNotificationCenter watchOS Tests.xctestplan new file mode 100644 index 0000000..7895a0a --- /dev/null +++ b/Tests/Test Plans/MethodNotificationCenter watchOS Tests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "DEA19715-A3B6-4505-B81C-B0DC1C1C2C40", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D5C323D11D140046E63E", + "name" : "MethodNotificationCenter watchOS" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD48BC93270E0DE800D842BC", + "name" : "MethodNotificationCenter watchOS Tests" + } + } + ], + "version" : 1 +} diff --git a/Tests/Test Plans/MethodNotificationCenterTests.xctestplan b/Tests/Test Plans/MethodNotificationCenterTests.xctestplan new file mode 100644 index 0000000..fbb5f9f --- /dev/null +++ b/Tests/Test Plans/MethodNotificationCenterTests.xctestplan @@ -0,0 +1,32 @@ +{ + "configurations" : [ + { + "id" : "EDFB1169-07E4-464B-85CC-6F011C5D5E19", + "name" : "Default", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D53C23D11B3E0046E63E", + "name" : "MethodNotificationCenter" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:MethodNotificationCenter.xcodeproj", + "identifier" : "DD86D54523D11B3E0046E63E", + "name" : "MethodNotificationCenterTests" + } + } + ], + "version" : 1 +} diff --git a/scripts/carthage.sh b/scripts/carthage.sh new file mode 100755 index 0000000..7dc0b7f --- /dev/null +++ b/scripts/carthage.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Needed to circumvent an issue with Carthage version < 0.37.0: https://github.com/Carthage/Carthage/issues/3019 +# +# carthage.sh +# Usage example: ./carthage.sh build --platform iOS + +VERSION="$(carthage version)" +"$(dirname "$0")/versions.sh" "$VERSION" "0.37.0" + +if [ $? -ge 0 ]; then + # Carthage version is greater than or equal to 0.37.0 meaning we can use the --use-xcframeworks flag + carthage "$@" --use-xcframeworks +else + # Workaround for Xcode 12 issue for Carthage versions prior to 0.37.0 + set -euo pipefail + + xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX) + trap 'rm -f "$xcconfig"' INT TERM HUP EXIT + + # For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise + # the build will fail on lipo due to duplicate architectures. + for simulator in iphonesimulator appletvsimulator; do + echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_${simulator}__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig + done + echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(PLATFORM_NAME)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig + + export XCODE_XCCONFIG_FILE="$xcconfig" + cat $XCODE_XCCONFIG_FILE + carthage "$@" +fi diff --git a/scripts/resolvepath.sh b/scripts/resolvepath.sh new file mode 100755 index 0000000..0ef7168 --- /dev/null +++ b/scripts/resolvepath.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# resolvepath.sh +# Usage example: ./resolvepath.sh "./some/random/path/../../" + +cd "$(dirname "$1")" &>/dev/null && echo "$PWD/${1##*/}" diff --git a/scripts/versions.sh b/scripts/versions.sh new file mode 100755 index 0000000..5d7ceaf --- /dev/null +++ b/scripts/versions.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# +# versions.sh +# Usage example: ./versions.sh "1.4.15" "1.7.0" + +# Copied & adapted from: https://stackoverflow.com/questions/4023830/how-to-compare-two-strings-in-dot-separated-version-format-in-bash#answer-4025065 +function compare_versions() { + if [ $1 = $2 ]; then + return 0 + fi + + local IFS=. + local i LHS=($1) RHS=($2) + + for ((i=${#LHS[@]}; i<${#RHS[@]}; i++)); do + LHS[i]=0 + done + + for ((i=0; i<${#LHS[@]}; i++)); do + if [ -z ${RHS[i]} ]; then + RHS[i]=0 + fi + + if ((10#${LHS[i]} > 10#${RHS[i]})); then + return 1 + elif ((10#${LHS[i]} < 10#${RHS[i]})); then + return -1 + fi + done + + return 0 +} + +exit $(compare_versions $1 $2) diff --git a/scripts/xcframework.sh b/scripts/xcframework.sh new file mode 100755 index 0000000..1fa9e01 --- /dev/null +++ b/scripts/xcframework.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +# xcframework.sh +# Usage example: ./xcframework.sh -output /MethodNotificationCenter.xcframework + +# Parse Arguments + +while [[ $# -gt 0 ]]; do + case "$1" in + -output) + OUTPUT_DIR="$2" + shift # -output + shift # + ;; + + -configuration) + CONFIGURATION="$2" + shift # -configuration + shift # + ;; + + *) + echo "Unknown argument: $1" + echo "./xcframework.sh [-output ]"] + exit 1 + esac +done + +if [ -z ${OUTPUT_DIR+x} ]; then + OUTPUT_DIR="$(dirname "$0")/build/MethodNotificationCenter.xcframework" +fi + +if [ -z ${CONFIGURATION+x} ]; then + CONFIGURATION="Release" +fi + +# Create Temporary Directory + +TMPDIR=`mktemp -d /tmp/.methodnotificationcenter.xcframework.build.XXXXXX` +cd "$(dirname "$(dirname "$0")")" + +check_result() { + if [ $1 -ne 0 ]; then + rm -rf "${TMPDIR}" + exit $1 + fi +} + +# Build iOS +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter" -destination "generic/platform=iOS" -archivePath "${TMPDIR}/iphoneos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="armv7 armv7s arm64 arm64e" archive +check_result $? + +# Build iOS Simulator +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter" -destination "generic/platform=iOS Simulator" -archivePath "${TMPDIR}/iphonesimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="i386 x86_64 arm64" archive +check_result $? + +# Build Mac Catalyst +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter" -destination "generic/platform=macOS,variant=Mac Catalyst" -archivePath "${TMPDIR}/maccatalyst.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64 arm64e" archive +check_result $? + +# Build Mac +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter macOS" -destination "generic/platform=macOS" -archivePath "${TMPDIR}/macos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64 arm64e" archive +check_result $? + +# Build tvOS +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter tvOS" -destination "generic/platform=tvOS" -archivePath "${TMPDIR}/appletvos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="arm64 arm64e" archive +check_result $? + +# Build tvOS Simulator +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter tvOS" -destination "generic/platform=tvOS Simulator" -archivePath "${TMPDIR}/appletvsimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="x86_64 arm64" archive +check_result $? + +# Build watchOS +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter watchOS" -destination "generic/platform=watchOS" -archivePath "${TMPDIR}/watchos.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="arm64_32 armv7k" archive +check_result $? + +# Build watchOS Simulator +xcodebuild -project "MethodNotificationCenter.xcodeproj" -scheme "MethodNotificationCenter watchOS" -destination "generic/platform=watchOS Simulator" -archivePath "${TMPDIR}/watchsimulator.xcarchive" -configuration ${CONFIGURATION} SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES ONLY_ACTIVE_ARCH=NO ARCHS="i386 x86_64 arm64" archive +check_result $? + +# Make XCFramework + +if [[ -d "${OUTPUT_DIR}" ]]; then + rm -rf "${OUTPUT_DIR}" +fi + +ARGUMENTS=(-create-xcframework -output "${OUTPUT_DIR}") + +for ARCHIVE in ${TMPDIR}/*.xcarchive; do + ARGUMENTS=(${ARGUMENTS[@]} -framework "${ARCHIVE}/Products/Library/Frameworks/MethodNotificationCenter.framework") + + if [[ -d "${ARCHIVE}/dSYMs/MethodNotificationCenter.framework.dSYM" ]]; then + ARGUMENTS=(${ARGUMENTS[@]} -debug-symbols "${ARCHIVE}/dSYMs/MethodNotificationCenter.framework.dSYM") + fi + + if [[ -d "${ARCHIVE}/BCSymbolMaps" ]]; then + for SYMBOLMAP in ${ARCHIVE}/BCSymbolMaps/*.bcsymbolmap; do + ARGUMENTS=(${ARGUMENTS[@]} -debug-symbols "${SYMBOLMAP}") + done + fi +done + +xcodebuild "${ARGUMENTS[@]}" +check_result $? + +# Cleanup + +rm -rf "${TMPDIR}" +exit 0 From d7ddf342f4b70b8d25ab555c92cb028d29f6c95d Mon Sep 17 00:00:00 2001 From: Joe Newton Date: Wed, 13 Oct 2021 13:15:15 -0400 Subject: [PATCH 2/4] Updated podspec version --- MethodNotificationCenter.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MethodNotificationCenter.podspec b/MethodNotificationCenter.podspec index ceb3211..122f4f9 100644 --- a/MethodNotificationCenter.podspec +++ b/MethodNotificationCenter.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "MethodNotificationCenter" - s.version = "0.1.0" + s.version = "0.1.1" s.summary = "Simple Objective-C Runtime Injection" s.description = <<-DESC A lightweight framework enabling easy snooping on Objective-C methods for iOS, macOS, and tvOS. From 15186109c9c427acf9489661d35f4b75fe891050 Mon Sep 17 00:00:00 2001 From: Joe Newton Date: Wed, 13 Oct 2021 13:31:25 -0400 Subject: [PATCH 3/4] Updated cocoapods.yml Updated workflow to use macOS 11+ for running watchOS unit tests --- .github/workflows/cocoapods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cocoapods.yml b/.github/workflows/cocoapods.yml index cd10b15..b761b55 100644 --- a/.github/workflows/cocoapods.yml +++ b/.github/workflows/cocoapods.yml @@ -4,7 +4,7 @@ on: [push, workflow_dispatch] jobs: lint: name: Lint - runs-on: macOS-latest + runs-on: macOS-11 steps: - name: Checkout Code uses: actions/checkout@v2 From b3b98c49081f8a56ed8a441106e88dd503d7fb85 Mon Sep 17 00:00:00 2001 From: Joe Newton Date: Wed, 13 Oct 2021 13:33:35 -0400 Subject: [PATCH 4/4] Update cocoapods.yml --- .github/workflows/cocoapods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cocoapods.yml b/.github/workflows/cocoapods.yml index b761b55..2de420c 100644 --- a/.github/workflows/cocoapods.yml +++ b/.github/workflows/cocoapods.yml @@ -20,4 +20,4 @@ jobs: - name: Lint (Static Library) run: | - pod lib lint --use-libraries + pod lib lint --use-libraries --skip-tests