diff --git a/.gitignore b/.gitignore
index b79283b9..0640b700 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,7 @@ bin/
# Carthage
Carthage/Build
+### warning!
+### do not ignore Carthage/Checkouts. see https://github.com/Carthage/Carthage/issues/1153
+###Carthage/Checkouts
+###
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 4f6cae56..3d788e4b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,12 @@
[submodule "Carthage/Checkouts/ocmock"]
path = Carthage/Checkouts/ocmock
url = https://github.com/erikdoe/ocmock.git
+[submodule "Carthage/Checkouts/libwebp"]
+ path = Carthage/Checkouts/libwebp
+ url = https://chromium.googlesource.com/webm/libwebp
+[submodule "Carthage/Checkouts/PINCache"]
+ url = https://github.com/pinterest/PINCache.git
+[submodule "Carthage/Checkouts/PINRemoteImage"]
+ url = https://github.com/pinterest/PINRemoteImage.git
+[submodule "Carthage/Checkouts/PINOperation"]
+ url = https://github.com/pinterest/PINOperation.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05e7c0ae..da0598e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,11 +2,23 @@
Changes for users of the library currently on `develop`:
+## [5.0.4](https://github.com/nytimes/NYTPhotoViewer/releases/tag/5.0.4)
+
+Changes for users of the library in 5.0.4:
+
+- Update PINRemoteImage to 3.0.1 for Xcode 12
+
+## [5.0.3](https://github.com/nytimes/NYTPhotoViewer/releases/tag/5.0.3)
+
+Changes for users of the library in 5.0.3:
+
+- Be more explicit with the PINRemoteImage dependency
+
## [5.0.2](https://github.com/nytimes/NYTPhotoViewer/releases/tag/5.0.2)
Changes for users of the library in 5.0.2:
-- Restore a method that was accidentally removed in 5.0.0. This prevented a long-tap guesture from displaying the 'Copy' menu.
+- Restore a method that was accidentally removed in 5.0.0. This prevented a long-tap gesture from displaying the 'Copy' menu.
- Remove obsolete check for iOS 8.3.
## [5.0.1](https://github.com/nytimes/NYTPhotoViewer/releases/tag/5.0.1)
diff --git a/Cartfile b/Cartfile
index 97e56f88..bf645069 100644
--- a/Cartfile
+++ b/Cartfile
@@ -1 +1 @@
-github "pinterest/PINRemoteImage" ~> 3.0.0
+github "pinterest/PINRemoteImage" ~> 3.0.1
diff --git a/Cartfile.resolved b/Cartfile.resolved
index ad3b38de..9ed8f19d 100644
--- a/Cartfile.resolved
+++ b/Cartfile.resolved
@@ -1,4 +1,5 @@
-github "erikdoe/ocmock" "v3.6"
-github "pinterest/PINCache" "3.0.1-beta.8"
-github "pinterest/PINOperation" "1.1.2"
-github "pinterest/PINRemoteImage" "3.0.0"
+git "https://chromium.googlesource.com/webm/libwebp" "v1.1.0"
+github "erikdoe/ocmock" "v3.7.1"
+github "pinterest/PINCache" "3.0.1"
+github "pinterest/PINOperation" "1.2"
+github "pinterest/PINRemoteImage" "3.0.1"
diff --git a/Carthage/Checkouts/PINCache/.buckconfig b/Carthage/Checkouts/PINCache/.buckconfig
deleted file mode 100644
index 2ea97ebd..00000000
--- a/Carthage/Checkouts/PINCache/.buckconfig
+++ /dev/null
@@ -1,21 +0,0 @@
-[cxx]
- default_platform = iphonesimulator-x86_64
- combined_preprocess_and_compile = true
-
-[apple]
- iphonesimulator_target_sdk_version = 5.0
- iphoneos_target_sdk_version = 5.0
- macosx_target_sdk_version = 10.7
- xctool_default_destination_specifier = platform=iOS Simulator, name=iPhone 6, OS=10.2
-
-[alias]
- lib = //:PINCache
- tests = //tests:Tests
-
-[project]
- parallel_parsing = true
- ide = xcode
- ignore = .buckd, \
- .hg, \
- .git, \
- buck-out, \
diff --git a/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml b/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml
new file mode 100644
index 00000000..71c75fe7
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml
@@ -0,0 +1,51 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ name: Build
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v1
+ - name: Analyze and Test
+ run: |
+ xcodebuild clean analyze test \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -project PINCache.xcodeproj \
+ -scheme PINCache \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Lint
+ run: pod lib lint
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Update
+ run: carthage update --no-use-binaries --no-build
+ - name: Build
+ run: carthage build --no-skip-current
diff --git a/Carthage/Checkouts/PINCache/.github_changelog_generator b/Carthage/Checkouts/PINCache/.github_changelog_generator
new file mode 100644
index 00000000..d0b7a525
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=3.0.1-beta.8
+future-release=3.0.1
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/.travis.yml b/Carthage/Checkouts/PINCache/.travis.yml
deleted file mode 100644
index ef93752c..00000000
--- a/Carthage/Checkouts/PINCache/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: objective-c
-osx_image: xcode7.3
-cache:
- - bundler
- - cocoapods
-branches:
- only:
- - master
-before_install:
- - gem install cocoapods -v '0.39.0'
-before_script:
- - pod lib lint --verbose
-env:
- matrix:
- - OS='8.4' name='iPhone 6'
- - OS='latest' name='iPhone 6'
-script:
- - xcodebuild clean test -project tests/PINCache.xcodeproj -scheme PINCacheTests -sdk iphonesimulator -destination "platform=iOS Simulator,name=$name,OS=$OS" ONLY_ACTIVE_ARCH=NO
diff --git a/Carthage/Checkouts/PINCache/BUCK b/Carthage/Checkouts/PINCache/BUCK
deleted file mode 100755
index bbb8d2c8..00000000
--- a/Carthage/Checkouts/PINCache/BUCK
+++ /dev/null
@@ -1,23 +0,0 @@
-apple_library(
- name = 'PINCache',
- exported_headers = glob(['Source/*.h']),
- # PINDiskCache.m should be compiled with '-fobjc-arc-exceptions' (#105)
- srcs =
- glob(['Source/*.m'], excludes = ['Source/PINDiskCache.m']) +
- [('Source/PINDiskCache.m', ['-fobjc-arc-exceptions'])],
- preprocessor_flags = ['-fobjc-arc'],
- lang_preprocessor_flags = {
- 'C': ['-std=gnu99'],
- 'CXX': ['-std=gnu++11', '-stdlib=libc++'],
- },
- linker_flags = [
- '-weak_framework',
- 'UIKit',
- '-weak_framework',
- 'AppKit',
- ],
- frameworks = [
- '$SDKROOT/System/Library/Frameworks/Foundation.framework',
- ],
- visibility = ['PUBLIC'],
-)
diff --git a/Carthage/Checkouts/PINCache/CHANGELOG.md b/Carthage/Checkouts/PINCache/CHANGELOG.md
index 9983beb4..8d30a13f 100644
--- a/Carthage/Checkouts/PINCache/CHANGELOG.md
+++ b/Carthage/Checkouts/PINCache/CHANGELOG.md
@@ -1,6 +1,31 @@
-## master
-
-* Add your own contributions to the next release on the line below this with your name.
+# Changelog
+
+## [3.0.1](https://github.com/Pinterest/PINCache/tree/3.0.1) (2020-08-20)
+
+[Full Changelog](https://github.com/Pinterest/PINCache/compare/3.0.1-beta.8...3.0.1)
+
+**Implemented enhancements:**
+
+- Support Catalyst [\#272](https://github.com/pinterest/PINCache/pull/272) ([cgmaier](https://github.com/cgmaier))
+
+**Merged pull requests:**
+
+- Update PINOperation [\#277](https://github.com/pinterest/PINCache/pull/277) ([garrettmoon](https://github.com/garrettmoon))
+- Fix PINCacheTests compiling in Xcode 12.0b4 [\#276](https://github.com/pinterest/PINCache/pull/276) ([arangato](https://github.com/arangato))
+- Remove BUCK files [\#274](https://github.com/pinterest/PINCache/pull/274) ([adlerj](https://github.com/adlerj))
+- Fix compiling in Xcode 12.0b4 [\#273](https://github.com/pinterest/PINCache/pull/273) ([zacwest](https://github.com/zacwest))
+- Fix the grammar in an assertion failure message [\#270](https://github.com/pinterest/PINCache/pull/270) ([jparise](https://github.com/jparise))
+- Add Carthage for watchOS, fix macOS min deployment target version [\#269](https://github.com/pinterest/PINCache/pull/269) ([dreampiggy](https://github.com/dreampiggy))
+- Remove the unused CI directory [\#265](https://github.com/pinterest/PINCache/pull/265) ([jparise](https://github.com/jparise))
+- Fix up analyze for github CI [\#264](https://github.com/pinterest/PINCache/pull/264) ([garrettmoon](https://github.com/garrettmoon))
+- Use correct class name in NSAssert\(\) messages [\#263](https://github.com/pinterest/PINCache/pull/263) ([jparise](https://github.com/jparise))
+- Check fileURL outside of the locked scope [\#262](https://github.com/pinterest/PINCache/pull/262) ([jparise](https://github.com/jparise))
+- Remove Danger from the project [\#261](https://github.com/pinterest/PINCache/pull/261) ([jparise](https://github.com/jparise))
+- Switch to GitHub Actions for CI [\#259](https://github.com/pinterest/PINCache/pull/259) ([jparise](https://github.com/jparise))
+- Test that the "remove object" blocks are called [\#258](https://github.com/pinterest/PINCache/pull/258) ([jparise](https://github.com/jparise))
+- Discrepancy between Header Comment and Implementation \#trivial [\#257](https://github.com/pinterest/PINCache/pull/257) ([jlaws](https://github.com/jlaws))
+- Optimization `PINMemoryCache` trim to date [\#252](https://github.com/pinterest/PINCache/pull/252) ([kinarobin](https://github.com/kinarobin))
+- Optimize `PINMemoryCache` remove objects when receive memory warning notification [\#251](https://github.com/pinterest/PINCache/pull/251) ([kinarobin](https://github.com/kinarobin))
## 3.0.1 -- Beta 8
- [fix] Initing PINCache with TTL enabled should enable TTL on PINMemoryCache. [#246](https://github.com/pinterest/PINCache/pull/246)
diff --git a/Carthage/Checkouts/PINCache/CI/build.sh b/Carthage/Checkouts/PINCache/CI/build.sh
deleted file mode 100755
index bbdb8f94..00000000
--- a/Carthage/Checkouts/PINCache/CI/build.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-
-make all
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/CI/exclude-from-build.json b/Carthage/Checkouts/PINCache/CI/exclude-from-build.json
deleted file mode 100644
index 28cc1627..00000000
--- a/Carthage/Checkouts/PINCache/CI/exclude-from-build.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- "^plans/",
- "^docs/",
- "^README.md$",
- "^CI/exclude-from-build.json$"
-]
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..8b4e45e2
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Code of Conduct
+
+At Pinterest, we work hard to ensure that our work environment is welcoming
+and inclusive to as many people as possible. We are committed to creating this
+environment for everyone involved in our open source projects as well. We
+welcome all participants regardless of ability, age, ethnicity, identified
+gender, religion (or lack there of), sexual orientation and socioeconomic
+status.
+
+This code of conduct details our expectations for upholding these values.
+
+## Good behavior
+
+We expect members of our community to exhibit good behavior including (but of
+course not limited to):
+
+- Using intentional and empathetic language.
+- Focusing on resolving instead of escalating conflict.
+- Providing constructive feedback.
+
+## Unacceptable behavior
+
+Some examples of unacceptable behavior (again, this is not an exhaustive
+list):
+
+- Harassment, publicly or in private.
+- Trolling.
+- Sexual advances (this isn’t the place for it).
+- Publishing other’s personal information.
+- Any behavior which would be deemed unacceptable in a professional environment.
+
+## Recourse
+
+If you are witness to or the target of unacceptable behavior, it should be
+reported to Pinterest at opensource-policy@pinterest.com. All reporters will
+be kept confidential and an appropriate response for each incident will be
+evaluated.
+
+If the maintainers do not uphold and enforce this code of conduct in
+good faith, community leadership will hold them accountable.
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/Cartfile b/Carthage/Checkouts/PINCache/Cartfile
index fba0de21..a7e3d640 100644
--- a/Carthage/Checkouts/PINCache/Cartfile
+++ b/Carthage/Checkouts/PINCache/Cartfile
@@ -1 +1 @@
-github "pinterest/PINOperation" ~> 1.1.0
\ No newline at end of file
+github "pinterest/PINOperation" ~> 1.2.0
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/Cartfile.resolved b/Carthage/Checkouts/PINCache/Cartfile.resolved
index d3f8bfc0..841e9a7d 100644
--- a/Carthage/Checkouts/PINCache/Cartfile.resolved
+++ b/Carthage/Checkouts/PINCache/Cartfile.resolved
@@ -1 +1 @@
-github "pinterest/PINOperation" "1.1"
+github "pinterest/PINOperation" "1.2"
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
new file mode 100644
index 00000000..cfe85acc
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
@@ -0,0 +1,80 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ name: Build
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Analyze and Test
+ run: |
+ xcodebuild clean analyze test \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -project PINOperation.xcodeproj \
+ -scheme PINOperation \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Lint
+ run: pod lib lint
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build
+ run: carthage build --no-skip-current
+ spm:
+ name: Swift Package Manager tests
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Test
+ run: swift test
+ example:
+ name: Build Example project
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Pods
+ run: cd Example && pod install
+ - name: Build
+ run: |
+ cd Example && xcodebuild clean analyze \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -workspace PINOperationExample.xcworkspace \
+ -scheme PINOperationExample \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator
new file mode 100644
index 00000000..19665f65
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=1.1.1
+future-release=1.2
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
index fd433d36..4021767b 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
@@ -52,3 +52,6 @@ Carthage/Build
# Bundler
.bundle
vendor
+
+# Example project
+Example/Pods
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..919434a6
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
index 76cacd3d..c7ade9d1 100755
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
@@ -1,8 +1,9 @@
apple_library(
name = 'PINOperation',
- exported_headers = glob(['PINOperation/*.h']),
+ modular = True,
+ exported_headers = glob(['Source/*.h']),
srcs =
- glob(['PINOperation/*.m']),
+ glob(['Source/*.m']),
preprocessor_flags = ['-fobjc-arc'],
lang_preprocessor_flags = {
'C': ['-std=gnu99'],
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
index 1844305f..221ad3cb 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
@@ -1,5 +1,28 @@
-## master
-* Add your own contributions to the next release on the line below this with your name.
+## [1.2](https://github.com/Pinterest/PINOperation/tree/1.2) (2020-06-30)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.2...1.2)
+
+**Merged pull requests:**
+
+- Swift Package Manager support [\#32](https://github.com/pinterest/PINOperation/pull/32) ([martinpucik](https://github.com/martinpucik))
+- Add Carthage for watchOS, dependent by PINCache [\#31](https://github.com/pinterest/PINOperation/pull/31) ([dreampiggy](https://github.com/dreampiggy))
+- Fix analyzing [\#30](https://github.com/pinterest/PINOperation/pull/30) ([garrettmoon](https://github.com/garrettmoon))
+- Standardize our GitHub Actions CI workflow [\#29](https://github.com/pinterest/PINOperation/pull/29) ([jparise](https://github.com/jparise))
+- Github CI [\#26](https://github.com/pinterest/PINOperation/pull/26) ([rahul-malik](https://github.com/rahul-malik))
+- Fixes coalesce operation race condition [\#24](https://github.com/pinterest/PINOperation/pull/24) ([zhongwuzw](https://github.com/zhongwuzw))
+
+## [1.1.2](https://github.com/Pinterest/PINOperation/tree/1.1.2) (2019-06-11)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.1...1.1.2)
+
+**Merged pull requests:**
+
+- Modernizing project [\#21](https://github.com/pinterest/PINOperation/pull/21) ([garrettmoon](https://github.com/garrettmoon))
+- Updates BUCK build file to match source layout. [\#20](https://github.com/pinterest/PINOperation/pull/20) ([RCacheaux](https://github.com/RCacheaux))
+- 1.1.1 release [\#19](https://github.com/pinterest/PINOperation/pull/19) ([garrettmoon](https://github.com/garrettmoon))
+
+## 1.1.1 -- 2018 February 3
+* Cleanup warnings [garrett](https://github.com/garrettmoon)
## 1.1 -- 2017 October 7
* Deprecate addOperation: in favor of scheduleOperation: [garrett](https://github.com/garrettmoon)
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
index abc6f913..03853aa7 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
@@ -1,5 +1,7 @@
[
"^plans/",
"^docs/",
- "^CI/exclude-from-build.json$"
+ "^CI/exclude-from-build.json$",
+ "^README.md$",
+ "^CHANGELOG.md$"
]
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..8b4e45e2
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Code of Conduct
+
+At Pinterest, we work hard to ensure that our work environment is welcoming
+and inclusive to as many people as possible. We are committed to creating this
+environment for everyone involved in our open source projects as well. We
+welcome all participants regardless of ability, age, ethnicity, identified
+gender, religion (or lack there of), sexual orientation and socioeconomic
+status.
+
+This code of conduct details our expectations for upholding these values.
+
+## Good behavior
+
+We expect members of our community to exhibit good behavior including (but of
+course not limited to):
+
+- Using intentional and empathetic language.
+- Focusing on resolving instead of escalating conflict.
+- Providing constructive feedback.
+
+## Unacceptable behavior
+
+Some examples of unacceptable behavior (again, this is not an exhaustive
+list):
+
+- Harassment, publicly or in private.
+- Trolling.
+- Sexual advances (this isn’t the place for it).
+- Publishing other’s personal information.
+- Any behavior which would be deemed unacceptable in a professional environment.
+
+## Recourse
+
+If you are witness to or the target of unacceptable behavior, it should be
+reported to Pinterest at opensource-policy@pinterest.com. All reporters will
+be kept confidential and an appropriate response for each incident will be
+evaluated.
+
+If the maintainers do not uphold and enforce this code of conduct in
+good faith, community leadership will hold them accountable.
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..382c6346
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
@@ -0,0 +1,391 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1387274E245D5BB500C1F56D /* AppDelegate.swift */; };
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13872757245D5BB800C1F56D /* Assets.xcassets */; };
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */; };
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 13872764245D5D8200C1F56D /* MainViewController.m */; };
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PINOperationExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 13872757245D5BB800C1F56D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 1387275A245D5BB800C1F56D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 1387275C245D5BB800C1F56D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PINOperationExample-Bridging-Header.h"; sourceTree = ""; };
+ 13872763245D5D8200C1F56D /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; };
+ 13872764245D5D8200C1F56D /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; };
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.release.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.release.xcconfig"; sourceTree = ""; };
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.debug.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.debug.xcconfig"; sourceTree = ""; };
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PINOperationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13872748245D5BB500C1F56D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 110EBBE34DCD59092AC3306C /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */,
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ 13872742245D5BB500C1F56D = {
+ isa = PBXGroup;
+ children = (
+ 1387274D245D5BB500C1F56D /* PINOperationExample */,
+ 1387274C245D5BB500C1F56D /* Products */,
+ 110EBBE34DCD59092AC3306C /* Pods */,
+ 5C200BF654CB547E7117CE2B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 1387274C245D5BB500C1F56D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 1387274D245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */,
+ 13872763245D5D8200C1F56D /* MainViewController.h */,
+ 13872764245D5D8200C1F56D /* MainViewController.m */,
+ 13872757245D5BB800C1F56D /* Assets.xcassets */,
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */,
+ 1387275C245D5BB800C1F56D /* Info.plist */,
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */,
+ );
+ path = PINOperationExample;
+ sourceTree = "";
+ };
+ 5C200BF654CB547E7117CE2B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1387274A245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */;
+ buildPhases = (
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */,
+ 13872747245D5BB500C1F56D /* Sources */,
+ 13872748245D5BB500C1F56D /* Frameworks */,
+ 13872749245D5BB500C1F56D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PINOperationExample;
+ productName = PINOperationExample;
+ productReference = 1387274B245D5BB500C1F56D /* PINOperationExample.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 13872743245D5BB500C1F56D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1140;
+ LastUpgradeCheck = 1140;
+ ORGANIZATIONNAME = Pinterest;
+ TargetAttributes = {
+ 1387274A245D5BB500C1F56D = {
+ CreatedOnToolsVersion = 11.4.1;
+ LastSwiftMigration = 1140;
+ };
+ };
+ };
+ buildConfigurationList = 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 13872742245D5BB500C1F56D;
+ productRefGroup = 1387274C245D5BB500C1F56D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1387274A245D5BB500C1F56D /* PINOperationExample */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13872749245D5BB500C1F56D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */,
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-PINOperationExample-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13872747245D5BB500C1F56D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */,
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 1387275A245D5BB800C1F56D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 1387275D245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ 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";
+ };
+ name = Debug;
+ };
+ 1387275E245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 13872760245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 13872761245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1387275D245D5BB800C1F56D /* Debug */,
+ 1387275E245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13872760245D5BB800C1F56D /* Debug */,
+ 13872761245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 13872743245D5BB500C1F56D /* Project object */;
+}
diff --git a/Carthage/Checkouts/PINRemoteImage/Examples/Example-tvOS/PINRemoteImage.tvOSExample.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
similarity index 74%
rename from Carthage/Checkouts/PINRemoteImage/Examples/Example-tvOS/PINRemoteImage.tvOSExample.xcworkspace/contents.xcworkspacedata
rename to Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
index 95c731b5..4cdc4885 100644
--- a/Carthage/Checkouts/PINRemoteImage/Examples/Example-tvOS/PINRemoteImage.tvOSExample.xcworkspace/contents.xcworkspacedata
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
@@ -2,7 +2,7 @@
+ location = "group:PINOperationExample.xcodeproj">
diff --git a/Carthage/Checkouts/PINRemoteImage/Examples/Example-Mac/PINRemoteImage.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Carthage/Checkouts/PINRemoteImage/Examples/Example-Mac/PINRemoteImage.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
new file mode 100644
index 00000000..7aa52db8
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
@@ -0,0 +1,31 @@
+//
+// AppDelegate.swift
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+final class AppDelegate: UIResponder, UIApplicationDelegate {
+ private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5)
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ let operationCount = 100
+ let group = DispatchGroup()
+ for _ in 0..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
new file mode 100644
index 00000000..75404a26
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
@@ -0,0 +1,41 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
new file mode 100644
index 00000000..df2e69c3
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
@@ -0,0 +1,17 @@
+//
+// MainViewController.h
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MainViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
new file mode 100644
index 00000000..50d0c95d
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
@@ -0,0 +1,41 @@
+//
+// MainViewController.m
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import "MainViewController.h"
+#import
+//#import
+
+@interface MainViewController ()
+@property (nonatomic, strong) PINOperationQueue *queue;
+@end
+
+@implementation MainViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ self.queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:5];
+
+ const NSUInteger operationCount = 100;
+ dispatch_group_t group = dispatch_group_create();
+
+ for (NSUInteger count = 0; count < operationCount; count++) {
+ dispatch_group_enter(group);
+ [self.queue scheduleOperation:^{
+ dispatch_group_leave(group);
+ } withPriority:PINOperationQueuePriorityDefault];
+ }
+
+ NSUInteger success = dispatch_group_wait(group, [self timeout]);
+ NSAssert(success == 0, @"Timed out before completing 100 operations");
+}
+
+- (dispatch_time_t)timeout {
+ return dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20 * NSEC_PER_SEC));
+}
+
+@end
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
new file mode 100644
index 00000000..f3b5f384
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
@@ -0,0 +1 @@
+#import
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile
new file mode 100644
index 00000000..ae5fd622
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile
@@ -0,0 +1,6 @@
+source 'https://cdn.cocoapods.org/'
+platform :ios, '8.0'
+
+target 'PINOperationExample' do
+ pod 'PINOperation', :path => '../'
+end
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock
new file mode 100644
index 00000000..266cc700
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - PINOperation (1.1.2)
+
+DEPENDENCIES:
+ - PINOperation (from `../`)
+
+EXTERNAL SOURCES:
+ PINOperation:
+ :path: "../"
+
+SPEC CHECKSUMS:
+ PINOperation: 24b774353ca248fcf87d67b2d61eef42087c125a
+
+PODFILE CHECKSUM: b83a75d584abe07185e7be951687702dadbabf84
+
+COCOAPODS: 1.9.1
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
index ecea6f8b..7e598595 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PINOperation'
- s.version = '1.1'
+ s.version = '1.2'
s.homepage = 'https://github.com/pinterest/PINOperation'
s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.'
s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' }
@@ -8,7 +8,7 @@ Pod::Spec.new do |s|
s.license = { :type => 'Apache 2.0', :file => 'LICENSE.txt' }
s.requires_arc = true
s.frameworks = 'Foundation'
- s.ios.deployment_target = '5.0'
+ s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.8'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
index abf27c9b..ddcb88c2 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
@@ -7,6 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
+ 3201179424444862004FD783 /* PINOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105801E2711B700890935 /* PINOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105811E2711B700890935 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105831E2711B700890935 /* PINOperationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105841E2711B700890935 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105861E2711B700890935 /* PINOperationTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105821E2711B700890935 /* PINOperationGroup.m */; };
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105851E2711B700890935 /* PINOperationQueue.m */; };
CC01055B1E27116600890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01052D1E27110D00890935 /* PINOperation.framework */; };
CC01056A1E27117300890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01053D1E27113700890935 /* PINOperation.framework */; };
CC0105791E27117F00890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01054A1E27114300890935 /* PINOperation.framework */; };
@@ -64,6 +71,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 3201178C24444859004FD783 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01052D1E27110D00890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01053D1E27113700890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01054A1E27114300890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -84,6 +92,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 3201178924444859004FD783 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105291E27110D00890935 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -153,6 +168,7 @@
CC0105561E27116600890935 /* PINOperationTests.xctest */,
CC0105651E27117300890935 /* PINOperation-tvOSTests.xctest */,
CC0105741E27117F00890935 /* PINOperation-macOSTests.xctest */,
+ 3201178C24444859004FD783 /* PINOperation.framework */,
);
name = Products;
sourceTree = "";
@@ -185,6 +201,18 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
+ 3201178724444859004FD783 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */,
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */,
+ 3201179424444862004FD783 /* PINOperation.h in Headers */,
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */,
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052A1E27110D00890935 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -224,6 +252,24 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 3201178B24444859004FD783 /* PINOperation-watchOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */;
+ buildPhases = (
+ 3201178724444859004FD783 /* Headers */,
+ 3201178824444859004FD783 /* Sources */,
+ 3201178924444859004FD783 /* Frameworks */,
+ 3201178A24444859004FD783 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "PINOperation-watchOS";
+ productName = "PINOperation-watchOS";
+ productReference = 3201178C24444859004FD783 /* PINOperation.framework */;
+ productType = "com.apple.product-type.framework";
+ };
CC01052C1E27110D00890935 /* PINOperation */ = {
isa = PBXNativeTarget;
buildConfigurationList = CC0105351E27110D00890935 /* Build configuration list for PBXNativeTarget "PINOperation" */;
@@ -338,9 +384,13 @@
CC0105241E27110D00890935 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0900;
+ LastUpgradeCheck = 1010;
ORGANIZATIONNAME = Pinterest;
TargetAttributes = {
+ 3201178B24444859004FD783 = {
+ CreatedOnToolsVersion = 11.4;
+ ProvisioningStyle = Automatic;
+ };
CC01052C1E27110D00890935 = {
CreatedOnToolsVersion = 7.3.1;
};
@@ -363,9 +413,10 @@
};
buildConfigurationList = CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */;
compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
+ Base,
en,
);
mainGroup = CC0105231E27110D00890935;
@@ -379,11 +430,19 @@
CC0105641E27117300890935 /* PINOperation-tvOSTests */,
CC0105491E27114300890935 /* PINOperation-macOS */,
CC0105731E27117F00890935 /* PINOperation-macOSTests */,
+ 3201178B24444859004FD783 /* PINOperation-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 3201178A24444859004FD783 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052B1E27110D00890935 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -429,6 +488,15 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 3201178824444859004FD783 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */,
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105281E27110D00890935 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -504,6 +572,61 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 3201179124444859004FD783 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Debug;
+ };
+ 3201179224444859004FD783 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Release;
+ };
CC0105331E27110D00890935 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -517,12 +640,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -573,12 +699,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -699,7 +828,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation;
PRODUCT_NAME = PINOperation;
SDKROOT = macosx;
@@ -720,7 +849,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation;
PRODUCT_NAME = PINOperation;
SDKROOT = macosx;
@@ -803,6 +932,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3201179124444859004FD783 /* Debug */,
+ 3201179224444859004FD783 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
index b06db321..ebc5ab8b 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
@@ -1,6 +1,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
index d7b132f1..82056667 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
@@ -1,6 +1,6 @@
--user Pinterest --project PINOperation`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog.
+- Update `spec.version` within `PINOperation.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`.
+- Create a new PR with the updated `PINOperation.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it.
+- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINOperation/releases/new). Use the generated changelog for the new release.
+- Push to Cocoapods with `pod trunk push`
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
index 1f67472b..68b074d2 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
@@ -6,7 +6,7 @@
// Copyright © 2017 Pinterest. All rights reserved.
//
-#import
-#import
-#import
-#import
+#import "PINOperationMacros.h"
+#import "PINOperationTypes.h"
+#import "PINOperationQueue.h"
+#import "PINOperationGroup.h"
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
index dba6a5c6..ddd2ed01 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
@@ -81,7 +81,7 @@ - (void)start
dispatch_block_t originalOperation = _operations[idx];
dispatch_block_t groupBlock = ^{
originalOperation();
- dispatch_group_leave(_group);
+ dispatch_group_leave(self->_group);
};
id operationReference = [_operationQueue scheduleOperation:groupBlock withPriority:[_operationPriorities[idx] unsignedIntegerValue]];
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
index 7009bc6c..5d0a38fe 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
@@ -291,10 +291,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations
dispatch_async(_semaphoreQueue, ^{
while (difference != 0) {
if (difference > 0) {
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
difference--;
} else {
- dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER);
+ dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER);
difference++;
}
}
@@ -305,16 +305,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations
- (BOOL)locked_cancelOperation:(id )operationReference
{
- BOOL success = NO;
PINOperation *operation = [_referenceToOperations objectForKey:operationReference];
- if (operation) {
- NSMutableOrderedSet *queue = [self operationQueueWithPriority:operation.priority];
- if ([queue containsObject:operation]) {
- success = YES;
- [queue removeObject:operation];
- [_queuedOperations removeObject:operation];
- dispatch_group_leave(_group);
- }
+ BOOL success = [self locked_removeOperation:operation];
+ if (success) {
+ dispatch_group_leave(_group);
}
return success;
}
@@ -353,10 +347,10 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial
for (dispatch_block_t completion in operation.completions) {
completion();
}
- dispatch_group_leave(_group);
+ dispatch_group_leave(self->_group);
[self lock];
- _serialQueueBusy = NO;
+ self->_serialQueueBusy = NO;
[self unlock];
//see if there are any other operations
@@ -379,22 +373,22 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial
}
dispatch_async(_semaphoreQueue, ^{
- dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER);
+ dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER);
[self lock];
PINOperation *operation = [self locked_nextOperationByPriority];
[self unlock];
if (operation) {
- dispatch_async(_concurrentQueue, ^{
+ dispatch_async(self->_concurrentQueue, ^{
operation.block(operation.data);
for (dispatch_block_t completion in operation.completions) {
completion();
}
- dispatch_group_leave(_group);
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_group_leave(self->_group);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
});
} else {
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
}
});
}
@@ -448,13 +442,20 @@ - (void)waitUntilAllOperationsAreFinished
}
//Call with lock held
-- (void)locked_removeOperation:(PINOperation *)operation
+- (BOOL)locked_removeOperation:(PINOperation *)operation
{
if (operation) {
NSMutableOrderedSet *priorityQueue = [self operationQueueWithPriority:operation.priority];
- [priorityQueue removeObject:operation];
- [_queuedOperations removeObject:operation];
+ if ([priorityQueue containsObject:operation]) {
+ [priorityQueue removeObject:operation];
+ [_queuedOperations removeObject:operation];
+ if (operation.identifier) {
+ [_identifierToOperations removeObjectForKey:operation.identifier];
+ }
+ return YES;
+ }
}
+ return NO;
}
- (void)lock
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
index a94ac25f..7505d56f 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
@@ -6,12 +6,11 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
-#import
+@import PINOperation;
+#import
#import
-#import
-
static NSTimeInterval PINOperationGroupTestBlockTimeout = 20;
@interface PINOperationGroupTests : XCTestCase
diff --git a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
index 70ebb7f8..844968f2 100644
--- a/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
+++ b/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
@@ -6,8 +6,8 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
+@import PINOperation;
#import
-#import
#import
static NSTimeInterval PINOperationQueueTestBlockTimeout = 20;
@@ -141,6 +141,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation
__block NSUInteger runningOperationCount = 0;
__block BOOL operationCountMaxedOut = NO;
+ XCTAssert(queue.maxConcurrentOperations == maxOperations, @"Max concurrent operations not correctly set.");
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
for (NSUInteger count = 0; count < operationCount; count++) {
@@ -154,7 +155,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation
XCTAssert(runningOperationCount <= maxOperations, @"Running too many operations at once: %lu", (unsigned long)runningOperationCount);
}
- usleep(1000);
+ usleep(10000);
@synchronized (self) {
runningOperationCount--;
@@ -512,10 +513,10 @@ - (void)testChangingMaximumNumberOfOperations
PINOperationQueue *queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:2];
[self helperConfirmMaxOperations:2 queue:queue];
queue.maxConcurrentOperations = 4;
- usleep(1000);
+ usleep(10000);
[self helperConfirmMaxOperations:4 queue:queue];
queue.maxConcurrentOperations = 2;
- usleep(1000);
+ usleep(10000);
[self helperConfirmMaxOperations:2 queue:queue];
}
diff --git a/Carthage/Checkouts/PINCache/Dangerfile b/Carthage/Checkouts/PINCache/Dangerfile
deleted file mode 100644
index d909431b..00000000
--- a/Carthage/Checkouts/PINCache/Dangerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-source_pattern = /(\.m|\.mm|\.h)$/
-
-# Sometimes it's a README fix, or something like that - which isn't relevant for
-# including in a project's CHANGELOG for example
-declared_trivial = github.pr_title.include? "#trivial"
-has_changes_in_source_directory = !git.modified_files.grep(/Source/).empty?
-
-modified_source_files = git.modified_files.grep(source_pattern)
-has_modified_source_files = !modified_source_files.empty?
-added_source_files = git.added_files.grep(source_pattern)
-has_added_source_files = !added_source_files.empty?
-
-# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
-warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
-
-# Warn when there is a big PR
-warn("This is a big PR, please consider splitting it up to ease code review.") if git.lines_of_code > 500
-
-# Changelog entries are required for changes to source files.
-no_changelog_entry = !git.modified_files.include?("CHANGELOG.md")
-if has_changes_in_source_directory && no_changelog_entry && !declared_trivial
- warn("Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.")
-end
diff --git a/Carthage/Checkouts/PINCache/Gemfile b/Carthage/Checkouts/PINCache/Gemfile
deleted file mode 100644
index 38bfbc8e..00000000
--- a/Carthage/Checkouts/PINCache/Gemfile
+++ /dev/null
@@ -1,4 +0,0 @@
-source 'https://rubygems.org'
-
-gem 'danger'
-gem 'danger-slack'
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINCache/Makefile b/Carthage/Checkouts/PINCache/Makefile
index ccc365f6..30b505cd 100644
--- a/Carthage/Checkouts/PINCache/Makefile
+++ b/Carthage/Checkouts/PINCache/Makefile
@@ -1,4 +1,4 @@
-PLATFORM="platform=iOS Simulator,name=iPhone 7"
+PLATFORM="platform=iOS Simulator,name=iPhone 8"
SDK="iphonesimulator"
SHELL=/bin/bash -o pipefail
@@ -25,4 +25,4 @@ carthage:
carthage update --no-use-binaries --no-build
carthage build --no-skip-current
-all: carthage lint test analyze
\ No newline at end of file
+all: carthage lint test analyze
diff --git a/Carthage/Checkouts/PINCache/PINCache.podspec b/Carthage/Checkouts/PINCache/PINCache.podspec
index eaa8c104..e1dc9cfb 100644
--- a/Carthage/Checkouts/PINCache/PINCache.podspec
+++ b/Carthage/Checkouts/PINCache/PINCache.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PINCache'
- s.version = '3.0.1-beta.8'
+ s.version = '3.0.1'
s.homepage = 'https://github.com/pinterest/PINCache'
s.summary = 'Fast, thread safe, parallel object cache for iOS and OS X.'
s.authors = { 'Garrett Moon' => 'garrett@pinterest.com', 'Justin Ouellette' => 'jstn@tumblr.com' }
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
s.ios.weak_frameworks = 'UIKit'
s.osx.weak_frameworks = 'AppKit'
s.ios.deployment_target = '8.0'
- s.osx.deployment_target = '10.11'
+ s.osx.deployment_target = '10.8'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
pch_PIN = <<-EOS
@@ -22,7 +22,7 @@ EOS
s.prefix_header_contents = pch_PIN
s.subspec 'Core' do |sp|
sp.source_files = 'Source/*.{h,m}'
- sp.dependency 'PINOperation', '~> 1.1.1'
+ sp.dependency 'PINOperation', '~> 1.2.0'
end
s.subspec 'Arc-exception-safe' do |sp|
sp.dependency 'PINCache/Core'
diff --git a/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
index f6340ace..e4d3d687 100644
--- a/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
+++ b/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
@@ -7,6 +7,15 @@
objects = {
/* Begin PBXBuildFile section */
+ 320117C524444E3C004FD783 /* PINCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 6928EED21E4160EE00B5D975 /* PINCaching.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C624444E3D004FD783 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106051E271A9000890935 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C724444E3D004FD783 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0106061E271A9000890935 /* PINCache.m */; };
+ 320117C824444E3D004FD783 /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106071E271A9000890935 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C924444E3D004FD783 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106081E271A9000890935 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117CA24444E3D004FD783 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0106091E271A9000890935 /* PINDiskCache.m */; };
+ 320117CB24444E3D004FD783 /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC01060A1E271A9000890935 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117CC24444E3D004FD783 /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC01060B1E271A9000890935 /* PINMemoryCache.m */; };
+ 320117CD24444E3D004FD783 /* PINCacheMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A0FBFF1E4D3282000B552D /* PINCacheMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
6818C1491E55020400875DB7 /* PINCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC0105CE1E271A4900890935 /* PINCache.framework */; };
6818C2881E55217D00875DB7 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6818C2871E55217D00875DB7 /* PINOperation.framework */; };
6818C28A1E55218400875DB7 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6818C2891E55218400875DB7 /* PINOperation.framework */; };
@@ -54,6 +63,20 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 320117AC24444DF7004FD783 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 3201178C24444859004FD783;
+ remoteInfo = "PINOperation-watchOS";
+ };
+ 320117B424444E23004FD783 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 3201178B24444859004FD783;
+ remoteInfo = "PINOperation-watchOS";
+ };
6818C2991E564C1100875DB7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
@@ -171,6 +194,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 320117A124444DF7004FD783 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6818C2871E55217D00875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = "../../Library/Developer/Xcode/DerivedData/PINCache-cxjnintatqynfgceozwzgezmeypl/Build/Products/Debug-iphonesimulator/PINOperation.framework"; sourceTree = ""; };
6818C2891E55218400875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = "../../Library/Developer/Xcode/DerivedData/PINCache-cxjnintatqynfgceozwzgezmeypl/Build/Products/Debug-appletvsimulator/PINOperation.framework"; sourceTree = ""; };
6818C28B1E55218A00875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = Carthage/Checkouts/PINOperation/build/Debug/PINOperation.framework; sourceTree = ""; };
@@ -202,6 +226,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 3201179E24444DF7004FD783 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AD1E271A1600890935 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -272,6 +303,7 @@
6818C2A01E564C1100875DB7 /* PINOperation-tvOSTests.xctest */,
6818C2A21E564C1100875DB7 /* PINOperation.framework */,
6818C2A41E564C1100875DB7 /* PINOperation-macOSTests.xctest */,
+ 320117AD24444DF7004FD783 /* PINOperation.framework */,
);
name = Products;
sourceTree = "";
@@ -296,6 +328,7 @@
CC0105DA1E271A5C00890935 /* PINCacheTests.xctest */,
CC0105E91E271A6400890935 /* PINCache-tvOSTests.xctest */,
CC0105F81E271A7300890935 /* PINCache-macOSTests.xctest */,
+ 320117A124444DF7004FD783 /* PINCache.framework */,
);
name = Products;
sourceTree = "";
@@ -343,6 +376,19 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
+ 3201179C24444DF7004FD783 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 320117CB24444E3D004FD783 /* PINMemoryCache.h in Headers */,
+ 320117C624444E3D004FD783 /* PINCache.h in Headers */,
+ 320117C824444E3D004FD783 /* PINCacheObjectSubscripting.h in Headers */,
+ 320117CD24444E3D004FD783 /* PINCacheMacros.h in Headers */,
+ 320117C924444E3D004FD783 /* PINDiskCache.h in Headers */,
+ 320117C524444E3C004FD783 /* PINCaching.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AE1E271A1600890935 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -386,6 +432,25 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 320117A024444DF7004FD783 /* PINCache-watchOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 320117AE24444DF7004FD783 /* Build configuration list for PBXNativeTarget "PINCache-watchOS" */;
+ buildPhases = (
+ 3201179D24444DF7004FD783 /* Sources */,
+ 3201179E24444DF7004FD783 /* Frameworks */,
+ 3201179C24444DF7004FD783 /* Headers */,
+ 3201179F24444DF7004FD783 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 320117B524444E23004FD783 /* PBXTargetDependency */,
+ );
+ name = "PINCache-watchOS";
+ productName = "PINCache-watchOS";
+ productReference = 320117A124444DF7004FD783 /* PINCache.framework */;
+ productType = "com.apple.product-type.framework";
+ };
CC0105B01E271A1600890935 /* PINCache */ = {
isa = PBXNativeTarget;
buildConfigurationList = CC0105B91E271A1600890935 /* Build configuration list for PBXNativeTarget "PINCache" */;
@@ -509,6 +574,10 @@
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = Pinterest;
TargetAttributes = {
+ 320117A024444DF7004FD783 = {
+ CreatedOnToolsVersion = 11.4;
+ ProvisioningStyle = Automatic;
+ };
CC0105B01E271A1600890935 = {
CreatedOnToolsVersion = 7.3.1;
};
@@ -553,11 +622,19 @@
CC0105E81E271A6400890935 /* PINCache-tvOSTests */,
CC0105CD1E271A4900890935 /* PINCache-macOS */,
CC0105F71E271A7300890935 /* PINCache-macOSTests */,
+ 320117A024444DF7004FD783 /* PINCache-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
+ 320117AD24444DF7004FD783 /* PINOperation.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = PINOperation.framework;
+ remoteRef = 320117AC24444DF7004FD783 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
6818C29A1E564C1100875DB7 /* PINOperation.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
@@ -603,6 +680,13 @@
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
+ 3201179F24444DF7004FD783 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AF1E271A1600890935 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -651,6 +735,16 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 3201179D24444DF7004FD783 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 320117C724444E3D004FD783 /* PINCache.m in Sources */,
+ 320117CC24444E3D004FD783 /* PINMemoryCache.m in Sources */,
+ 320117CA24444E3D004FD783 /* PINDiskCache.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AC1E271A1600890935 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -712,6 +806,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 320117B524444E23004FD783 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "PINOperation-watchOS";
+ targetProxy = 320117B424444E23004FD783 /* PBXContainerItemProxy */;
+ };
6818C2A61E564C2000875DB7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = PINOperation;
@@ -745,6 +844,61 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 320117A624444DF7004FD783 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
+ PRODUCT_NAME = PINCache;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Debug;
+ };
+ 320117A724444DF7004FD783 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
+ PRODUCT_NAME = PINCache;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Release;
+ };
CC0105B71E271A1600890935 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -878,6 +1032,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
+ SUPPORTS_MACCATALYST = YES;
};
name = Debug;
};
@@ -900,6 +1055,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
+ SUPPORTS_MACCATALYST = YES;
};
name = Release;
};
@@ -924,7 +1080,7 @@
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
@@ -949,7 +1105,7 @@
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
@@ -971,6 +1127,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = PINCache;
SDKROOT = macosx;
@@ -996,6 +1153,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = PINCache;
SDKROOT = macosx;
@@ -1086,6 +1244,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 320117AE24444DF7004FD783 /* Build configuration list for PBXNativeTarget "PINCache-watchOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 320117A624444DF7004FD783 /* Debug */,
+ 320117A724444DF7004FD783 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
CC0105AB1E271A1600890935 /* Build configuration list for PBXProject "PINCache" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme b/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme
new file mode 100644
index 00000000..9b9c8426
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINCache/README.md b/Carthage/Checkouts/PINCache/README.md
index 15346ba3..aa81564a 100644
--- a/Carthage/Checkouts/PINCache/README.md
+++ b/Carthage/Checkouts/PINCache/README.md
@@ -2,7 +2,7 @@
[![CocoaPods](https://img.shields.io/cocoapods/v/PINCache.svg)](http://cocoadocs.org/docsets/PINCache/)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
-[![Build status](https://badge.buildkite.com/03e247305c96c3371f2ff2766e9c8c1efdd5fdb3a7eceaff43.svg?branch=master&style=flat)](https://buildkite.com/pinterest/pincache)
+[![Build status](https://github.com/pinterest/PINCache/workflows/CI/badge.svg)](https://github.com/pinterest/PINCache/actions?query=workflow%3ACI+branch%3Amaster)
## Fast, non-deadlocking parallel object cache for iOS and OS X.
@@ -82,7 +82,7 @@ Add the following line to your `Cartfile` and run `carthage update --platform io
## Requirements
-__PINCache__ requires iOS 8.0, tvOS 9.0, watchOS 2.0 or OS X 10.8 and greater.
+__PINCache__ requires iOS 8.0, tvOS 9.0, watchOS 2.0 or macOS 10.8 and greater.
## Contact
diff --git a/Carthage/Checkouts/PINCache/RELEASE.md b/Carthage/Checkouts/PINCache/RELEASE.md
new file mode 100644
index 00000000..6e86b11c
--- /dev/null
+++ b/Carthage/Checkouts/PINCache/RELEASE.md
@@ -0,0 +1,13 @@
+# Release Process
+This document describes the process for a public PINCache release.
+
+### Preparation
+- Install [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator): `sudo gem install github_changelog_generator`
+- Generate a GitHub Personal Access Token to prevent running into public GitHub API rate limits: https://github.com/github-changelog-generator/github-changelog-generator#github-token
+
+### Process
+- Run `github_changelog_generator` in PINCache project directory: `github_changelog_generator --token --user Pinterest --project PINCache`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog.
+- Update `spec.version` within `PINCache.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`.
+- Create a new PR with the updated `PINCache.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it.
+- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINCache/releases/new). Use the generated changelog for the new release.
+- Push to Cocoapods with `pod trunk push`
diff --git a/Carthage/Checkouts/PINCache/Source/PINCache.m b/Carthage/Checkouts/PINCache/Source/PINCache.m
index 0bfdf8b1..f574e0c0 100644
--- a/Carthage/Checkouts/PINCache/Source/PINCache.m
+++ b/Carthage/Checkouts/PINCache/Source/PINCache.m
@@ -118,7 +118,7 @@ - (void)objectForKeyAsync:(NSString *)key completion:(PINCacheObjectBlock)block
return;
[self.operationQueue scheduleOperation:^{
- [self->_memoryCache objectForKeyAsync:key completion:^(PINMemoryCache *memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ [self->_memoryCache objectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
if (memoryCacheObject) {
// Update file modification date. TODO: make this a separate method?
[self->_diskCache fileURLForKeyAsync:memoryCacheKey completion:^(NSString * _Nonnull key, NSURL * _Nullable fileURL) {}];
@@ -271,8 +271,8 @@ - (NSUInteger)diskByteCount
{
__block NSUInteger byteCount = 0;
- [_diskCache synchronouslyLockFileAccessWhileExecutingBlock:^(PINDiskCache *diskCache) {
- byteCount = diskCache.byteCount;
+ [_diskCache synchronouslyLockFileAccessWhileExecutingBlock:^(id diskCache) {
+ byteCount = ((PINDiskCache *)diskCache).byteCount;
}];
return byteCount;
diff --git a/Carthage/Checkouts/PINCache/Source/PINDiskCache.h b/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
index 34578b79..224f9ce1 100644
--- a/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
+++ b/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
@@ -26,7 +26,7 @@ typedef NS_ENUM(NSInteger, PINDiskCacheError) {
/**
A callback block which provides the cache, key and object as arguments
*/
-typedef void (^PINDiskCacheObjectBlock)(PINDiskCache *cache, NSString *key, id _Nullable object);
+typedef void (^PINDiskCacheObjectBlock)(PINDiskCache *cache, NSString *key, id _Nullable object);
/**
A callback block which provides the key and fileURL of the object
@@ -155,7 +155,7 @@ PIN_SUBCLASSING_RESTRICTED
/**
The maximum number of bytes allowed on disk. This value is checked every time an object is set, if the written
- size exceeds the limit a trim call is queued. Defaults to `0.0`, meaning no practical limit.
+ size exceeds the limit a trim call is queued. Defaults to 50MB.
*/
@property (assign) NSUInteger byteLimit;
@@ -163,7 +163,7 @@ PIN_SUBCLASSING_RESTRICTED
/**
The maximum number of seconds an object is allowed to exist in the cache. Setting this to a value
greater than `0.0` will start a recurring GCD timer with the same period that calls .
- Setting it back to `0.0` will stop the timer. Defaults to `0.0`, meaning no limit.
+ Setting it back to `0.0` will stop the timer. Defaults to 30 days.
*/
@property (assign) NSTimeInterval ageLimit;
diff --git a/Carthage/Checkouts/PINCache/Source/PINDiskCache.m b/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
index 448f72ef..40e606d8 100644
--- a/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
+++ b/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
@@ -111,7 +111,7 @@ @implementation PINDiskCache
- (void)dealloc
{
__unused int result = pthread_mutex_destroy(&_mutex);
- NSCAssert(result == 0, @"Failed to destroy lock in PINMemoryCache %p. Code: %d", (void *)self, result);
+ NSCAssert(result == 0, @"Failed to destroy lock in PINDiskCache %p. Code: %d", (void *)self, result);
pthread_cond_destroy(&_diskWritableCondition);
pthread_cond_destroy(&_diskStateKnownCondition);
}
@@ -185,19 +185,19 @@ - (instancetype)initWithName:(NSString *)name
operationQueue:(PINOperationQueue *)operationQueue
ttlCache:(BOOL)ttlCache
{
- if (!name)
+ if (!name) {
return nil;
-
+ }
NSAssert(((!serializer && !deserializer) || (serializer && deserializer)),
@"PINDiskCache must be initialized with a serializer AND deserializer.");
NSAssert(((!keyEncoder && !keyDecoder) || (keyEncoder && keyDecoder)),
- @"PINDiskCache must be initialized with a encoder AND decoder.");
+ @"PINDiskCache must be initialized with an encoder AND decoder.");
if (self = [super init]) {
__unused int result = pthread_mutex_init(&_mutex, NULL);
- NSAssert(result == 0, @"Failed to init lock in PINMemoryCache %@. Code: %d", self, result);
+ NSAssert(result == 0, @"Failed to init lock in PINDiskCache %@. Code: %d", self, result);
_name = [name copy];
_prefix = [prefix copy];
@@ -666,15 +666,18 @@ - (BOOL)_locked_setAgeLimit:(NSTimeInterval)ageLimit forURL:(NSURL *)fileURL
- (BOOL)removeFileAndExecuteBlocksForKey:(NSString *)key
{
NSURL *fileURL = [self encodedFileURLForKey:key];
-
+ if (!fileURL) {
+ return NO;
+ }
+
// We only need to lock until writable at the top because once writable, always writable
[self lockForWriting];
- if (!fileURL || ![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) {
+ if (![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) {
[self unlock];
return NO;
}
- PINCacheObjectBlock willRemoveObjectBlock = _willRemoveObjectBlock;
+ PINDiskCacheObjectBlock willRemoveObjectBlock = _willRemoveObjectBlock;
if (willRemoveObjectBlock) {
[self unlock];
willRemoveObjectBlock(self, key, nil);
@@ -695,7 +698,7 @@ - (BOOL)removeFileAndExecuteBlocksForKey:(NSString *)key
[_metadata removeObjectForKey:key];
- PINCacheObjectBlock didRemoveObjectBlock = _didRemoveObjectBlock;
+ PINDiskCacheObjectBlock didRemoveObjectBlock = _didRemoveObjectBlock;
if (didRemoveObjectBlock) {
[self unlock];
_didRemoveObjectBlock(self, key, nil);
@@ -1204,7 +1207,7 @@ - (void)setObject:(id )object forKey:(NSString *)key withAgeLimit:(NST
}
[self lockForWriting];
- PINCacheObjectBlock willAddObjectBlock = self->_willAddObjectBlock;
+ PINDiskCacheObjectBlock willAddObjectBlock = self->_willAddObjectBlock;
if (willAddObjectBlock) {
[self unlock];
willAddObjectBlock(self, key, object);
@@ -1248,7 +1251,7 @@ - (void)setObject:(id )object forKey:(NSString *)key withAgeLimit:(NST
fileURL = nil;
}
- PINCacheObjectBlock didAddObjectBlock = self->_didAddObjectBlock;
+ PINDiskCacheObjectBlock didAddObjectBlock = self->_didAddObjectBlock;
if (didAddObjectBlock) {
[self unlock];
didAddObjectBlock(self, key, object);
@@ -1660,29 +1663,49 @@ - (void)removeObjectForKey:(NSString *)key block:(nullable PINDiskCacheObjectBlo
- (void)trimToDate:(NSDate *)date block:(nullable PINDiskCacheBlock)block
{
- [self trimToDateAsync:date completion:block];
+ [self trimToDateAsync:date completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)trimToSize:(NSUInteger)byteCount block:(nullable PINDiskCacheBlock)block
{
- [self trimToSizeAsync:byteCount completion:block];
+ [self trimToSizeAsync:byteCount completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)trimToSizeByDate:(NSUInteger)byteCount block:(nullable PINDiskCacheBlock)block
{
- [self trimToSizeAsync:byteCount completion:block];
+ [self trimToSizeAsync:byteCount completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)removeAllObjects:(nullable PINDiskCacheBlock)block
{
- [self removeAllObjectsAsync:block];
+ [self removeAllObjectsAsync:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)enumerateObjectsWithBlock:(PINDiskCacheFileURLBlock)block completionBlock:(nullable PINDiskCacheBlock)completionBlock
{
[self enumerateObjectsWithBlockAsync:^(NSString * _Nonnull key, NSURL * _Nullable fileURL, BOOL * _Nonnull stop) {
block(key, fileURL);
- } completionBlock:completionBlock];
+ } completionBlock:^(id diskCache) {
+ if (completionBlock) {
+ completionBlock((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)setTtlCache:(BOOL)ttlCache
diff --git a/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m b/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
index 34c2d19b..9f64c293 100644
--- a/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
+++ b/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
@@ -130,10 +130,11 @@ + (PINMemoryCache *)sharedCache
#pragma mark - Private Methods -
- (void)didReceiveMemoryWarningNotification:(NSNotification *)notification {
- if (self.removeAllObjectsOnMemoryWarning)
+ if (self.removeAllObjectsOnMemoryWarning) {
[self removeAllObjectsAsync:nil];
-
- [self removeExpiredObjects];
+ } else {
+ [self removeExpiredObjects];
+ }
[self.operationQueue scheduleOperation:^{
[self lock];
@@ -190,23 +191,19 @@ - (void)removeObjectAndExecuteBlocksForKey:(NSString *)key
- (void)trimMemoryToDate:(NSDate *)trimDate
{
[self lock];
- NSArray *keysSortedByCreatedDate = [_createdDates keysSortedByValueUsingSelector:@selector(compare:)];
NSDictionary *createdDates = [_createdDates copy];
NSDictionary *ageLimits = [_ageLimits copy];
[self unlock];
- for (NSString *key in keysSortedByCreatedDate) { // oldest objects first
- NSDate *createdDate = createdDates[key];
+ [createdDates enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSDate * _Nonnull createdDate, BOOL * _Nonnull stop) {
NSTimeInterval ageLimit = [ageLimits[key] doubleValue];
- if (!createdDate || ageLimit > 0.0)
- continue;
-
+ if (!createdDate || ageLimit > 0.0) {
+ return;
+ }
if ([createdDate compare:trimDate] == NSOrderedAscending) { // older than trim date
[self removeObjectAndExecuteBlocksForKey:key];
- } else {
- break;
}
- }
+ }];
}
- (void)removeExpiredObjects
@@ -836,42 +833,74 @@ - (void)containsObjectForKey:(NSString *)key block:(PINMemoryCacheContainmentBlo
- (void)objectForKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self objectForKeyAsync:key completion:block];
+ [self objectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)setObject:(id)object forKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self setObjectAsync:object forKey:key completion:block];
+ [self setObjectAsync:object forKey:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)setObject:(id)object forKey:(NSString *)key withCost:(NSUInteger)cost block:(nullable PINMemoryCacheObjectBlock)block
{
- [self setObjectAsync:object forKey:key withCost:cost completion:block];
+ [self setObjectAsync:object forKey:key withCost:cost completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)removeObjectForKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self removeObjectForKeyAsync:key completion:block];
+ [self removeObjectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)trimToDate:(NSDate *)date block:(nullable PINMemoryCacheBlock)block
{
- [self trimToDateAsync:date completion:block];
+ [self trimToDateAsync:date completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)trimToCost:(NSUInteger)cost block:(nullable PINMemoryCacheBlock)block
{
- [self trimToCostAsync:cost completion:block];
+ [self trimToCostAsync:cost completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)trimToCostByDate:(NSUInteger)cost block:(nullable PINMemoryCacheBlock)block
{
- [self trimToCostByDateAsync:cost completion:block];
+ [self trimToCostByDateAsync:cost completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)removeAllObjects:(nullable PINMemoryCacheBlock)block
{
- [self removeAllObjectsAsync:block];
+ [self removeAllObjectsAsync:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)enumerateObjectsWithBlock:(PINMemoryCacheObjectBlock)block completionBlock:(nullable PINMemoryCacheBlock)completionBlock
@@ -881,7 +910,11 @@ - (void)enumerateObjectsWithBlock:(PINMemoryCacheObjectBlock)block completionBlo
PINMemoryCache *memoryCache = (PINMemoryCache *)cache;
block(memoryCache, key, object);
}
- } completionBlock:completionBlock];
+ } completionBlock:^(id memoryCache) {
+ if (completionBlock) {
+ completionBlock((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)setTtlCache:(BOOL)ttlCache
diff --git a/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m b/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
index 4d89f9ad..b16cb450 100644
--- a/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
+++ b/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
@@ -130,7 +130,7 @@ - (void)testObjectSet
__block PINImage *image = nil;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
- [self.cache setObjectAsync:[self image] forKey:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache setObjectAsync:[self image] forKey:key completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -148,7 +148,7 @@ - (void)testObjectSetWithCost
PINImage *srcImage = [self image];
NSUInteger cost = (NSUInteger)(srcImage.size.width * srcImage.size.height);
- [self.cache setObjectAsync:srcImage forKey:key withCost:cost completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache setObjectAsync:srcImage forKey:key withCost:cost completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -170,7 +170,7 @@ - (void)testObjectSetWithDuplicateKey
[self.cache setObject:value1 forKey:key];
[self.cache setObject:value2 forKey:key];
- [self.cache objectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
cachedValue = (NSString *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -233,7 +233,7 @@ - (void)testObjectGet
self.cache[key] = [self image];
- [self.cache objectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -252,7 +252,7 @@ - (void)testObjectGetWithInvalidKey
self.cache[key] = [self image];
- [self.cache objectForKeyAsync:invalidKey completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:invalidKey completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -268,16 +268,28 @@ - (void)testObjectRemove
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
self.cache[key] = [self image];
-
- [self.cache removeObjectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+
+ __block BOOL willRemoveObjectBlockCalled = NO;
+ self.cache.diskCache.willRemoveObjectBlock = ^(PINDiskCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ willRemoveObjectBlockCalled = YES;
+ };
+
+ __block BOOL didRemoveObjectBlockCalled = NO;
+ self.cache.diskCache.didRemoveObjectBlock = ^(PINDiskCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ didRemoveObjectBlockCalled = YES;
+ };
+
+ [self.cache removeObjectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, [self timeout]);
id object = self.cache[key];
-
+
XCTAssertNil(object, @"object was not removed");
+ XCTAssertTrue(willRemoveObjectBlockCalled, @"willRemoveObjectBlock was not called");
+ XCTAssertTrue(didRemoveObjectBlockCalled, @"didRemoveObjectBlock was not called");
}
- (void)testObjectRemoveAll
@@ -288,8 +300,18 @@ - (void)testObjectRemoveAll
self.cache[key1] = key1;
self.cache[key2] = key2;
-
- [self.cache removeAllObjectsAsync:^(PINCache *cache) {
+
+ __block BOOL willRemoveAllObjectsBlockCalled = NO;
+ self.cache.diskCache.willRemoveAllObjectsBlock = ^(id _Nonnull cache) {
+ willRemoveAllObjectsBlockCalled = YES;
+ };
+
+ __block BOOL didRemoveAllObjectsBlockCalled = NO;
+ self.cache.diskCache.didRemoveAllObjectsBlock = ^(id _Nonnull cache) {
+ didRemoveAllObjectsBlockCalled = YES;
+ };
+
+ [self.cache removeAllObjectsAsync:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
@@ -300,6 +322,8 @@ - (void)testObjectRemoveAll
XCTAssertNil(object1, @"not all objects were removed");
XCTAssertNil(object2, @"not all objects were removed");
+ XCTAssertTrue(willRemoveAllObjectsBlockCalled, @"willRemoveAllObjectsBlock was not called");
+ XCTAssertTrue(didRemoveAllObjectsBlockCalled, @"didRemoveAllObjectsBlock was not called");
XCTAssertTrue(self.cache.memoryCache.totalCost == 0, @"memory cache cost was not 0 after removing all objects");
XCTAssertTrue(self.cache.diskByteCount == 0, @"disk cache byte count was not 0 after removing all objects");
}
@@ -481,9 +505,9 @@ - (void)testOneThousandAndOneWrites
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
dispatch_group_enter(group);
- [self.cache setObjectAsync:obj forKey:key completion:^(PINCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ [self.cache setObjectAsync:obj forKey:key completion:^(id _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
dispatch_async(queue, ^{
- [self.cache objectForKeyAsync:key completion:^(PINCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ [self.cache objectForKeyAsync:key completion:^(id _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
NSString *obj = [[NSString alloc] initWithFormat:@"obj %lu", (unsigned long)i];
XCTAssertTrue([object isEqualToString:obj] == YES, @"object returned was not object set");
@synchronized (self) {
@@ -511,7 +535,7 @@ - (void)testMemoryWarningBlock
__block BOOL blockDidExecute = NO;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
blockDidExecute = YES;
dispatch_semaphore_signal(semaphore);
};
@@ -530,7 +554,7 @@ - (void)testBackgroundBlock
__block BOOL blockDidExecute = NO;
- self.cache.memoryCache.didEnterBackgroundBlock = ^(PINMemoryCache *cache) {
+ self.cache.memoryCache.didEnterBackgroundBlock = ^(id cache) {
blockDidExecute = YES;
dispatch_semaphore_signal(semaphore);
};
@@ -567,8 +591,8 @@ - (void)testMemoryWarningProperty
__block id object = nil;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
- object = cache[@"object"];
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
+ object = [cache objectForKey:@"object"];
dispatch_semaphore_signal(semaphore);
};
@@ -596,12 +620,13 @@ - (void)testMemoryCacheEnumerationWithWarning
__block NSUInteger enumCount = 0;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
- [cache enumerateObjectsWithBlockAsync:^(PINMemoryCache *cache, NSString *key, id object, BOOL *stop) {
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
+ PINMemoryCache *memoryCache = (PINMemoryCache *)cache;
+ [memoryCache enumerateObjectsWithBlockAsync:^(id cache, NSString *key, id object, BOOL *stop) {
@synchronized (self) {
enumCount++;
}
- } completionBlock:^(PINMemoryCache *cache) {
+ } completionBlock:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
};
@@ -641,7 +666,7 @@ - (void)testDiskCacheEnumeration
@synchronized (self) {
enumCount++;
}
- } completionBlock:^(PINDiskCache *cache) {
+ } completionBlock:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
@@ -698,25 +723,25 @@ - (void)testAgeLimit
__block id diskObj2 = nil;
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
memObj1 = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key2 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
memObj2 = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.diskCache objectForKeyAsync:key1 completion:^(PINDiskCache *cache, NSString *key, id object) {
+ [self.cache.diskCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
diskObj1 = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.diskCache objectForKeyAsync:key2 completion:^(PINDiskCache *cache, NSString *key, id object) {
+ [self.cache.diskCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
diskObj2 = object;
dispatch_group_leave(group);
}];
@@ -741,19 +766,19 @@ - (void)testAgeLimit
sleep(1);
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
memObj1 = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key2 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
memObj2 = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.diskCache objectForKeyAsync:key1 completion:^(PINDiskCache *cache, NSString *key, id object) {
+ [self.cache.diskCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
diskObj1 = object;
dispatch_group_leave(group);
}];
@@ -878,13 +903,13 @@ - (void)_testTTLCacheObjectAccess {
__block id diskObj = nil;
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
memObj = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.diskCache objectForKeyAsync:key completion:^(PINDiskCache *cache, NSString *key, id object) {
+ [self.cache.diskCache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
diskObj = object;
dispatch_group_leave(group);
}];
@@ -902,13 +927,13 @@ - (void)_testTTLCacheObjectAccess {
diskObj = nil;
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
memObj = object;
dispatch_group_leave(group);
}];
dispatch_group_enter(group);
- [self.cache.diskCache objectForKeyAsync:key completion:^(PINDiskCache *cache, NSString *key, id object) {
+ [self.cache.diskCache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
diskObj = object;
dispatch_group_leave(group);
}];
@@ -955,7 +980,7 @@ - (void)_testTTLCacheObjectEnumeration {
XCTAssertEqual(objCount, expectedObjCount, @"Expected %lu objects in the cache", (unsigned long)expectedObjCount);
objCount = 0;
- [self.cache.memoryCache enumerateObjectsWithBlock:^(PINMemoryCache *cache, NSString *key, id _Nullable object, BOOL *stop) {
+ [self.cache.memoryCache enumerateObjectsWithBlock:^(id cache, NSString *key, id _Nullable object, BOOL *stop) {
objCount++;
}];
@@ -981,7 +1006,7 @@ - (void)_testTTLCacheObjectEnumeration {
XCTAssertEqual(objCount, expectedObjCount, @"Expected %lu objects in the cache", (unsigned long)expectedObjCount);
objCount = 0;
- [self.cache.memoryCache enumerateObjectsWithBlock:^(PINMemoryCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object, BOOL *stop) {
+ [self.cache.memoryCache enumerateObjectsWithBlock:^(id _Nonnull cache, NSString * _Nonnull key, id _Nullable object, BOOL *stop) {
objCount++;
}];
@@ -1065,13 +1090,13 @@ - (void)testObjectTTLObjectAccess
// Neither object should be expired at this point and should exist in both caches
XCTestExpectation *memObjectForKey1Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #1"];
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
XCTAssertNotNil(object, @"should still be in memory cache");
[memObjectForKey1Expectation fulfill];
}];
XCTestExpectation *memObjectForKey2Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #2"];
- [self.cache.memoryCache objectForKeyAsync:key2 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
XCTAssertNotNil(object, @"should still be in memory cache");
[memObjectForKey2Expectation fulfill];
}];
@@ -1096,13 +1121,13 @@ - (void)testObjectTTLObjectAccess
// The first object has been expired for 30 seconds and should not exist in the cache anymore.
memObjectForKey1Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #1"];
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
XCTAssertNil(object, @"should not be in memory cache");
[memObjectForKey1Expectation fulfill];
}];
memObjectForKey2Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #2"];
- [self.cache.memoryCache objectForKeyAsync:key2 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
XCTAssertNotNil(object, @"should not be in memory cache");
[memObjectForKey2Expectation fulfill];
}];
@@ -1138,7 +1163,7 @@ - (void)testObjectTTLObjectEnumeration
// Neither object should be expired at this point and should exist in both caches
__block NSUInteger objCount = 0;
- [self.cache.memoryCache enumerateObjectsWithBlock:^(PINMemoryCache *cache, NSString *key, id _Nullable object, BOOL *stop) {
+ [self.cache.memoryCache enumerateObjectsWithBlock:^(id cache, NSString *key, id _Nullable object, BOOL *stop) {
objCount++;
}];
XCTAssertEqual(objCount, 2, @"Expected 2 objects, got %tu.", objCount);
@@ -1155,7 +1180,7 @@ - (void)testObjectTTLObjectEnumeration
// The first object has been expired for 30 seconds and should not exist in the cache anymore.
objCount = 0;
- [self.cache.memoryCache enumerateObjectsWithBlock:^(PINMemoryCache *cache, NSString *key, id _Nullable object, BOOL *stop) {
+ [self.cache.memoryCache enumerateObjectsWithBlock:^(id cache, NSString *key, id _Nullable object, BOOL *stop) {
objCount++;
}];
XCTAssertEqual(objCount, 1, @"Expected 1 object, got %tu.", objCount);
@@ -1191,13 +1216,13 @@ - (void)testRemoveExpiredObjects
[NSDate stopMockingDate];
XCTestExpectation *memObjectForKey1Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #1"];
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id cache, NSString *key, id object) {
XCTAssertNil(object, @"should not be in memory cache");
[memObjectForKey1Expectation fulfill];
}];
XCTestExpectation *memObjectForKey2Expectation = [self expectationWithDescription:@"memoryCache objectForKeyAsync - #2"];
- [self.cache.memoryCache objectForKeyAsync:key2 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key2 completion:^(id cache, NSString *key, id object) {
XCTAssertNotNil(object, @"should not be in memory cache");
[memObjectForKey2Expectation fulfill];
}];
@@ -1323,7 +1348,7 @@ - (void)testDiskCacheEmptyTrash
}
dispatch_group_enter(group);
- [self.cache.diskCache removeAllObjectsAsync:^(PINDiskCache * _Nonnull cache) {
+ [self.cache.diskCache removeAllObjectsAsync:^(id _Nonnull cache) {
// Temporary directory should be bigger now since the trash directory is still inside it
NSError *error = nil;
unsigned long long tempDirSize = [[fileManager attributesOfItemAtPath:trashPath error:&error] fileSize];
diff --git a/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml b/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
new file mode 100644
index 00000000..cfe85acc
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
@@ -0,0 +1,80 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ name: Build
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Analyze and Test
+ run: |
+ xcodebuild clean analyze test \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -project PINOperation.xcodeproj \
+ -scheme PINOperation \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Lint
+ run: pod lib lint
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build
+ run: carthage build --no-skip-current
+ spm:
+ name: Swift Package Manager tests
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Test
+ run: swift test
+ example:
+ name: Build Example project
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Pods
+ run: cd Example && pod install
+ - name: Build
+ run: |
+ cd Example && xcodebuild clean analyze \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -workspace PINOperationExample.xcworkspace \
+ -scheme PINOperationExample \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
diff --git a/Carthage/Checkouts/PINOperation/.github_changelog_generator b/Carthage/Checkouts/PINOperation/.github_changelog_generator
new file mode 100644
index 00000000..19665f65
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=1.1.1
+future-release=1.2
diff --git a/Carthage/Checkouts/PINOperation/.gitignore b/Carthage/Checkouts/PINOperation/.gitignore
index fd433d36..4021767b 100644
--- a/Carthage/Checkouts/PINOperation/.gitignore
+++ b/Carthage/Checkouts/PINOperation/.gitignore
@@ -52,3 +52,6 @@ Carthage/Build
# Bundler
.bundle
vendor
+
+# Example project
+Example/Pods
diff --git a/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..919434a6
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINOperation/CHANGELOG.md b/Carthage/Checkouts/PINOperation/CHANGELOG.md
index 0dd71245..221ad3cb 100644
--- a/Carthage/Checkouts/PINOperation/CHANGELOG.md
+++ b/Carthage/Checkouts/PINOperation/CHANGELOG.md
@@ -1,5 +1,25 @@
-## master
-* Add your own contributions to the next release on the line below this with your name.
+## [1.2](https://github.com/Pinterest/PINOperation/tree/1.2) (2020-06-30)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.2...1.2)
+
+**Merged pull requests:**
+
+- Swift Package Manager support [\#32](https://github.com/pinterest/PINOperation/pull/32) ([martinpucik](https://github.com/martinpucik))
+- Add Carthage for watchOS, dependent by PINCache [\#31](https://github.com/pinterest/PINOperation/pull/31) ([dreampiggy](https://github.com/dreampiggy))
+- Fix analyzing [\#30](https://github.com/pinterest/PINOperation/pull/30) ([garrettmoon](https://github.com/garrettmoon))
+- Standardize our GitHub Actions CI workflow [\#29](https://github.com/pinterest/PINOperation/pull/29) ([jparise](https://github.com/jparise))
+- Github CI [\#26](https://github.com/pinterest/PINOperation/pull/26) ([rahul-malik](https://github.com/rahul-malik))
+- Fixes coalesce operation race condition [\#24](https://github.com/pinterest/PINOperation/pull/24) ([zhongwuzw](https://github.com/zhongwuzw))
+
+## [1.1.2](https://github.com/Pinterest/PINOperation/tree/1.1.2) (2019-06-11)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.1...1.1.2)
+
+**Merged pull requests:**
+
+- Modernizing project [\#21](https://github.com/pinterest/PINOperation/pull/21) ([garrettmoon](https://github.com/garrettmoon))
+- Updates BUCK build file to match source layout. [\#20](https://github.com/pinterest/PINOperation/pull/20) ([RCacheaux](https://github.com/RCacheaux))
+- 1.1.1 release [\#19](https://github.com/pinterest/PINOperation/pull/19) ([garrettmoon](https://github.com/garrettmoon))
## 1.1.1 -- 2018 February 3
* Cleanup warnings [garrett](https://github.com/garrettmoon)
diff --git a/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..8b4e45e2
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Code of Conduct
+
+At Pinterest, we work hard to ensure that our work environment is welcoming
+and inclusive to as many people as possible. We are committed to creating this
+environment for everyone involved in our open source projects as well. We
+welcome all participants regardless of ability, age, ethnicity, identified
+gender, religion (or lack there of), sexual orientation and socioeconomic
+status.
+
+This code of conduct details our expectations for upholding these values.
+
+## Good behavior
+
+We expect members of our community to exhibit good behavior including (but of
+course not limited to):
+
+- Using intentional and empathetic language.
+- Focusing on resolving instead of escalating conflict.
+- Providing constructive feedback.
+
+## Unacceptable behavior
+
+Some examples of unacceptable behavior (again, this is not an exhaustive
+list):
+
+- Harassment, publicly or in private.
+- Trolling.
+- Sexual advances (this isn’t the place for it).
+- Publishing other’s personal information.
+- Any behavior which would be deemed unacceptable in a professional environment.
+
+## Recourse
+
+If you are witness to or the target of unacceptable behavior, it should be
+reported to Pinterest at opensource-policy@pinterest.com. All reporters will
+be kept confidential and an appropriate response for each incident will be
+evaluated.
+
+If the maintainers do not uphold and enforce this code of conduct in
+good faith, community leadership will hold them accountable.
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINOperation/Dangerfile b/Carthage/Checkouts/PINOperation/Dangerfile
deleted file mode 100644
index d909431b..00000000
--- a/Carthage/Checkouts/PINOperation/Dangerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-source_pattern = /(\.m|\.mm|\.h)$/
-
-# Sometimes it's a README fix, or something like that - which isn't relevant for
-# including in a project's CHANGELOG for example
-declared_trivial = github.pr_title.include? "#trivial"
-has_changes_in_source_directory = !git.modified_files.grep(/Source/).empty?
-
-modified_source_files = git.modified_files.grep(source_pattern)
-has_modified_source_files = !modified_source_files.empty?
-added_source_files = git.added_files.grep(source_pattern)
-has_added_source_files = !added_source_files.empty?
-
-# Make it more obvious that a PR is a work in progress and shouldn't be merged yet
-warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
-
-# Warn when there is a big PR
-warn("This is a big PR, please consider splitting it up to ease code review.") if git.lines_of_code > 500
-
-# Changelog entries are required for changes to source files.
-no_changelog_entry = !git.modified_files.include?("CHANGELOG.md")
-if has_changes_in_source_directory && no_changelog_entry && !declared_trivial
- warn("Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.")
-end
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..382c6346
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
@@ -0,0 +1,391 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1387274E245D5BB500C1F56D /* AppDelegate.swift */; };
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13872757245D5BB800C1F56D /* Assets.xcassets */; };
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */; };
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 13872764245D5D8200C1F56D /* MainViewController.m */; };
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PINOperationExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 13872757245D5BB800C1F56D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 1387275A245D5BB800C1F56D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 1387275C245D5BB800C1F56D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PINOperationExample-Bridging-Header.h"; sourceTree = ""; };
+ 13872763245D5D8200C1F56D /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; };
+ 13872764245D5D8200C1F56D /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; };
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.release.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.release.xcconfig"; sourceTree = ""; };
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.debug.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.debug.xcconfig"; sourceTree = ""; };
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PINOperationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13872748245D5BB500C1F56D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 110EBBE34DCD59092AC3306C /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */,
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ 13872742245D5BB500C1F56D = {
+ isa = PBXGroup;
+ children = (
+ 1387274D245D5BB500C1F56D /* PINOperationExample */,
+ 1387274C245D5BB500C1F56D /* Products */,
+ 110EBBE34DCD59092AC3306C /* Pods */,
+ 5C200BF654CB547E7117CE2B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 1387274C245D5BB500C1F56D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 1387274D245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */,
+ 13872763245D5D8200C1F56D /* MainViewController.h */,
+ 13872764245D5D8200C1F56D /* MainViewController.m */,
+ 13872757245D5BB800C1F56D /* Assets.xcassets */,
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */,
+ 1387275C245D5BB800C1F56D /* Info.plist */,
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */,
+ );
+ path = PINOperationExample;
+ sourceTree = "";
+ };
+ 5C200BF654CB547E7117CE2B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1387274A245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */;
+ buildPhases = (
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */,
+ 13872747245D5BB500C1F56D /* Sources */,
+ 13872748245D5BB500C1F56D /* Frameworks */,
+ 13872749245D5BB500C1F56D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PINOperationExample;
+ productName = PINOperationExample;
+ productReference = 1387274B245D5BB500C1F56D /* PINOperationExample.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 13872743245D5BB500C1F56D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1140;
+ LastUpgradeCheck = 1140;
+ ORGANIZATIONNAME = Pinterest;
+ TargetAttributes = {
+ 1387274A245D5BB500C1F56D = {
+ CreatedOnToolsVersion = 11.4.1;
+ LastSwiftMigration = 1140;
+ };
+ };
+ };
+ buildConfigurationList = 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 13872742245D5BB500C1F56D;
+ productRefGroup = 1387274C245D5BB500C1F56D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1387274A245D5BB500C1F56D /* PINOperationExample */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13872749245D5BB500C1F56D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */,
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-PINOperationExample-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13872747245D5BB500C1F56D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */,
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 1387275A245D5BB800C1F56D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 1387275D245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ 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";
+ };
+ name = Debug;
+ };
+ 1387275E245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 13872760245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 13872761245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1387275D245D5BB800C1F56D /* Debug */,
+ 1387275E245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13872760245D5BB800C1F56D /* Debug */,
+ 13872761245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 13872743245D5BB500C1F56D /* Project object */;
+}
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..4cdc4885
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Examples/Example-tvOS/PINRemoteImage.tvOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Carthage/Checkouts/PINRemoteImage/Examples/Example-tvOS/PINRemoteImage.tvOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
new file mode 100644
index 00000000..7aa52db8
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
@@ -0,0 +1,31 @@
+//
+// AppDelegate.swift
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+final class AppDelegate: UIResponder, UIApplicationDelegate {
+ private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5)
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ let operationCount = 100
+ let group = DispatchGroup()
+ for _ in 0..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
new file mode 100644
index 00000000..75404a26
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
@@ -0,0 +1,41 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
new file mode 100644
index 00000000..df2e69c3
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
@@ -0,0 +1,17 @@
+//
+// MainViewController.h
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MainViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
new file mode 100644
index 00000000..50d0c95d
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
@@ -0,0 +1,41 @@
+//
+// MainViewController.m
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import "MainViewController.h"
+#import
+//#import
+
+@interface MainViewController ()
+@property (nonatomic, strong) PINOperationQueue *queue;
+@end
+
+@implementation MainViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ self.queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:5];
+
+ const NSUInteger operationCount = 100;
+ dispatch_group_t group = dispatch_group_create();
+
+ for (NSUInteger count = 0; count < operationCount; count++) {
+ dispatch_group_enter(group);
+ [self.queue scheduleOperation:^{
+ dispatch_group_leave(group);
+ } withPriority:PINOperationQueuePriorityDefault];
+ }
+
+ NSUInteger success = dispatch_group_wait(group, [self timeout]);
+ NSAssert(success == 0, @"Timed out before completing 100 operations");
+}
+
+- (dispatch_time_t)timeout {
+ return dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20 * NSEC_PER_SEC));
+}
+
+@end
diff --git a/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
new file mode 100644
index 00000000..f3b5f384
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
@@ -0,0 +1 @@
+#import
diff --git a/Carthage/Checkouts/PINOperation/Example/Podfile b/Carthage/Checkouts/PINOperation/Example/Podfile
new file mode 100644
index 00000000..ae5fd622
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/Podfile
@@ -0,0 +1,6 @@
+source 'https://cdn.cocoapods.org/'
+platform :ios, '8.0'
+
+target 'PINOperationExample' do
+ pod 'PINOperation', :path => '../'
+end
diff --git a/Carthage/Checkouts/PINOperation/Example/Podfile.lock b/Carthage/Checkouts/PINOperation/Example/Podfile.lock
new file mode 100644
index 00000000..266cc700
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Example/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - PINOperation (1.1.2)
+
+DEPENDENCIES:
+ - PINOperation (from `../`)
+
+EXTERNAL SOURCES:
+ PINOperation:
+ :path: "../"
+
+SPEC CHECKSUMS:
+ PINOperation: 24b774353ca248fcf87d67b2d61eef42087c125a
+
+PODFILE CHECKSUM: b83a75d584abe07185e7be951687702dadbabf84
+
+COCOAPODS: 1.9.1
diff --git a/Carthage/Checkouts/PINOperation/Gemfile b/Carthage/Checkouts/PINOperation/Gemfile
deleted file mode 100644
index 38bfbc8e..00000000
--- a/Carthage/Checkouts/PINOperation/Gemfile
+++ /dev/null
@@ -1,4 +0,0 @@
-source 'https://rubygems.org'
-
-gem 'danger'
-gem 'danger-slack'
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINOperation/PINOperation.podspec b/Carthage/Checkouts/PINOperation/PINOperation.podspec
index ac068160..7e598595 100644
--- a/Carthage/Checkouts/PINOperation/PINOperation.podspec
+++ b/Carthage/Checkouts/PINOperation/PINOperation.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PINOperation'
- s.version = '1.1.2'
+ s.version = '1.2'
s.homepage = 'https://github.com/pinterest/PINOperation'
s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.'
s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' }
diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
index b253fd7e..ddcb88c2 100644
--- a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
+++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
@@ -7,6 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
+ 3201179424444862004FD783 /* PINOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105801E2711B700890935 /* PINOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105811E2711B700890935 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105831E2711B700890935 /* PINOperationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105841E2711B700890935 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105861E2711B700890935 /* PINOperationTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105821E2711B700890935 /* PINOperationGroup.m */; };
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105851E2711B700890935 /* PINOperationQueue.m */; };
CC01055B1E27116600890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01052D1E27110D00890935 /* PINOperation.framework */; };
CC01056A1E27117300890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01053D1E27113700890935 /* PINOperation.framework */; };
CC0105791E27117F00890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01054A1E27114300890935 /* PINOperation.framework */; };
@@ -64,6 +71,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 3201178C24444859004FD783 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01052D1E27110D00890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01053D1E27113700890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01054A1E27114300890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -84,6 +92,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 3201178924444859004FD783 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105291E27110D00890935 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -153,6 +168,7 @@
CC0105561E27116600890935 /* PINOperationTests.xctest */,
CC0105651E27117300890935 /* PINOperation-tvOSTests.xctest */,
CC0105741E27117F00890935 /* PINOperation-macOSTests.xctest */,
+ 3201178C24444859004FD783 /* PINOperation.framework */,
);
name = Products;
sourceTree = "";
@@ -185,6 +201,18 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
+ 3201178724444859004FD783 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */,
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */,
+ 3201179424444862004FD783 /* PINOperation.h in Headers */,
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */,
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052A1E27110D00890935 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -224,6 +252,24 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 3201178B24444859004FD783 /* PINOperation-watchOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */;
+ buildPhases = (
+ 3201178724444859004FD783 /* Headers */,
+ 3201178824444859004FD783 /* Sources */,
+ 3201178924444859004FD783 /* Frameworks */,
+ 3201178A24444859004FD783 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "PINOperation-watchOS";
+ productName = "PINOperation-watchOS";
+ productReference = 3201178C24444859004FD783 /* PINOperation.framework */;
+ productType = "com.apple.product-type.framework";
+ };
CC01052C1E27110D00890935 /* PINOperation */ = {
isa = PBXNativeTarget;
buildConfigurationList = CC0105351E27110D00890935 /* Build configuration list for PBXNativeTarget "PINOperation" */;
@@ -341,6 +387,10 @@
LastUpgradeCheck = 1010;
ORGANIZATIONNAME = Pinterest;
TargetAttributes = {
+ 3201178B24444859004FD783 = {
+ CreatedOnToolsVersion = 11.4;
+ ProvisioningStyle = Automatic;
+ };
CC01052C1E27110D00890935 = {
CreatedOnToolsVersion = 7.3.1;
};
@@ -380,11 +430,19 @@
CC0105641E27117300890935 /* PINOperation-tvOSTests */,
CC0105491E27114300890935 /* PINOperation-macOS */,
CC0105731E27117F00890935 /* PINOperation-macOSTests */,
+ 3201178B24444859004FD783 /* PINOperation-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 3201178A24444859004FD783 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052B1E27110D00890935 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -430,6 +488,15 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 3201178824444859004FD783 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */,
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105281E27110D00890935 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -505,6 +572,61 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 3201179124444859004FD783 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Debug;
+ };
+ 3201179224444859004FD783 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Release;
+ };
CC0105331E27110D00890935 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -810,6 +932,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3201179124444859004FD783 /* Debug */,
+ 3201179224444859004FD783 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-watchOS.xcscheme b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-watchOS.xcscheme
new file mode 100644
index 00000000..4187965f
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-watchOS.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINOperation/Package.swift b/Carthage/Checkouts/PINOperation/Package.swift
new file mode 100644
index 00000000..1e747dba
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/Package.swift
@@ -0,0 +1,18 @@
+// swift-tools-version:5.2
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+ name: "PINOperation",
+ products: [
+ // Products define the executables and libraries produced by a package, and make them visible to other packages.
+ .library(name: "PINOperation", targets: ["PINOperation"]),
+ ],
+ targets: [
+ // Targets are the basic building blocks of a package. A target can define a module or a test suite.
+ // Targets can depend on other targets in this package, and on products in packages which this package depends on.
+ .target(name: "PINOperation", path: "Source", publicHeadersPath: "."),
+ .testTarget(name: "PINOperationTests", dependencies: ["PINOperation"], path: "Tests")
+ ]
+)
diff --git a/Carthage/Checkouts/PINOperation/README.md b/Carthage/Checkouts/PINOperation/README.md
index c705a1fc..c7ac84ec 100644
--- a/Carthage/Checkouts/PINOperation/README.md
+++ b/Carthage/Checkouts/PINOperation/README.md
@@ -2,7 +2,7 @@
[![CocoaPods](https://img.shields.io/cocoapods/v/PINOperation.svg)](http://cocoadocs.org/docsets/PINOperation/)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
-[![Build status](https://badge.buildkite.com/665147e3b6852a9c1c3a3df3ced779c32bc6396ba69fee4b6e.svg?branch=master&style=flat)](https://buildkite.com/pinterest/pinoperation)
+[![Build status](https://github.com/pinterest/PINOperation/workflows/CI/badge.svg)](https://github.com/pinterest/PINOperation/actions?query=workflow%3ACI+branch%3Amaster)
## Fast, concurrency-limited task queue for iOS and macOS.
@@ -31,7 +31,7 @@ Add the following line to your `Cartfile` and run `carthage update --platform io
## Requirements
-__PINOperation__ requires iOS 5.0 or OS X 10.8 and greater.
+__PINOperation__ requires iOS 8.0, tvOS 9.0, macOS 10.8 or watchOS 2.0 and greater.
## Contact
diff --git a/Carthage/Checkouts/PINOperation/RELEASE.md b/Carthage/Checkouts/PINOperation/RELEASE.md
new file mode 100644
index 00000000..e0fc7ee8
--- /dev/null
+++ b/Carthage/Checkouts/PINOperation/RELEASE.md
@@ -0,0 +1,13 @@
+# Release Process
+This document describes the process for a public PINOperation release.
+
+### Preparation
+- Install [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator): `sudo gem install github_changelog_generator`
+- Generate a GitHub Personal Access Token to prevent running into public GitHub API rate limits: https://github.com/github-changelog-generator/github-changelog-generator#github-token
+
+### Process
+- Run `github_changelog_generator` in PINOperation project directory: `github_changelog_generator --token --user Pinterest --project PINOperation`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog.
+- Update `spec.version` within `PINOperation.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`.
+- Create a new PR with the updated `PINOperation.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it.
+- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINOperation/releases/new). Use the generated changelog for the new release.
+- Push to Cocoapods with `pod trunk push`
diff --git a/Carthage/Checkouts/PINOperation/Source/PINOperation.h b/Carthage/Checkouts/PINOperation/Source/PINOperation.h
index 1f67472b..68b074d2 100644
--- a/Carthage/Checkouts/PINOperation/Source/PINOperation.h
+++ b/Carthage/Checkouts/PINOperation/Source/PINOperation.h
@@ -6,7 +6,7 @@
// Copyright © 2017 Pinterest. All rights reserved.
//
-#import
-#import
-#import
-#import
+#import "PINOperationMacros.h"
+#import "PINOperationTypes.h"
+#import "PINOperationQueue.h"
+#import "PINOperationGroup.h"
diff --git a/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m b/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
index d2a024e6..5d0a38fe 100644
--- a/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
+++ b/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
@@ -305,16 +305,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations
- (BOOL)locked_cancelOperation:(id )operationReference
{
- BOOL success = NO;
PINOperation *operation = [_referenceToOperations objectForKey:operationReference];
- if (operation) {
- NSMutableOrderedSet *queue = [self operationQueueWithPriority:operation.priority];
- if ([queue containsObject:operation]) {
- success = YES;
- [queue removeObject:operation];
- [_queuedOperations removeObject:operation];
- dispatch_group_leave(_group);
- }
+ BOOL success = [self locked_removeOperation:operation];
+ if (success) {
+ dispatch_group_leave(_group);
}
return success;
}
@@ -448,13 +442,20 @@ - (void)waitUntilAllOperationsAreFinished
}
//Call with lock held
-- (void)locked_removeOperation:(PINOperation *)operation
+- (BOOL)locked_removeOperation:(PINOperation *)operation
{
if (operation) {
NSMutableOrderedSet *priorityQueue = [self operationQueueWithPriority:operation.priority];
- [priorityQueue removeObject:operation];
- [_queuedOperations removeObject:operation];
+ if ([priorityQueue containsObject:operation]) {
+ [priorityQueue removeObject:operation];
+ [_queuedOperations removeObject:operation];
+ if (operation.identifier) {
+ [_identifierToOperations removeObjectForKey:operation.identifier];
+ }
+ return YES;
+ }
}
+ return NO;
}
- (void)lock
diff --git a/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m b/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
index a94ac25f..7505d56f 100644
--- a/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
+++ b/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
@@ -6,12 +6,11 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
-#import
+@import PINOperation;
+#import
#import
-#import
-
static NSTimeInterval PINOperationGroupTestBlockTimeout = 20;
@interface PINOperationGroupTests : XCTestCase
diff --git a/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m b/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
index 927f96bc..844968f2 100644
--- a/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
+++ b/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
@@ -6,8 +6,8 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
+@import PINOperation;
#import
-#import
#import
static NSTimeInterval PINOperationQueueTestBlockTimeout = 20;
diff --git a/Carthage/Checkouts/PINRemoteImage/.github/workflows/ci.yaml b/Carthage/Checkouts/PINRemoteImage/.github/workflows/ci.yaml
new file mode 100644
index 00000000..7242d7a0
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/.github/workflows/ci.yaml
@@ -0,0 +1,47 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v1
+ - name: Analyze
+ run: make analyze
+ test:
+ name: Test
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v1
+ - name: Test
+ run: make test
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: CocoaPods
+ run: make cocoapods
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Carthage
+ run: make carthage
diff --git a/Carthage/Checkouts/PINRemoteImage/.github_changelog_generator b/Carthage/Checkouts/PINRemoteImage/.github_changelog_generator
new file mode 100644
index 00000000..0e779f30
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=3.0.1
+future-release=3.0.2
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/CHANGELOG.md b/Carthage/Checkouts/PINRemoteImage/CHANGELOG.md
index e4daf7bc..c4445344 100644
--- a/Carthage/Checkouts/PINRemoteImage/CHANGELOG.md
+++ b/Carthage/Checkouts/PINRemoteImage/CHANGELOG.md
@@ -1,10 +1,35 @@
-## master
-* Add your own contributions to the next release on the line below this with your name.
+## [3.0.1](https://github.com/Pinterest/PINRemoteImage/tree/3.0.1) (2020-09-08)
+
+[Full Changelog](https://github.com/Pinterest/PINRemoteImage/compare/3.0.0...3.0.1)
+
+**Merged pull requests:**
+
+- Update PINCache in podspec [\#564](https://github.com/pinterest/PINRemoteImage/pull/564) ([garrettmoon](https://github.com/garrettmoon))
+- Update PINCache and PINOperation [\#562](https://github.com/pinterest/PINRemoteImage/pull/562) ([garrettmoon](https://github.com/garrettmoon))
+- Let's use the same commands we use locally. [\#561](https://github.com/pinterest/PINRemoteImage/pull/561) ([garrettmoon](https://github.com/garrettmoon))
+- Ensure the example defines the macros before referencing them. [\#557](https://github.com/pinterest/PINRemoteImage/pull/557) ([bolsinga](https://github.com/bolsinga))
+- Remove the PCH file and ensure macros are defined before using [\#556](https://github.com/pinterest/PINRemoteImage/pull/556) ([bolsinga](https://github.com/bolsinga))
+- Seems that having the framework and example have the same name confuses cocoapods [\#555](https://github.com/pinterest/PINRemoteImage/pull/555) ([garrettmoon](https://github.com/garrettmoon))
+- Upgrade WebP to 1.1.0 [\#554](https://github.com/pinterest/PINRemoteImage/pull/554) ([garrettmoon](https://github.com/garrettmoon))
+- Conditionally call CADisplayLink method based upon iOS10 availability to remove deprecation warning [\#552](https://github.com/pinterest/PINRemoteImage/pull/552) ([bolsinga](https://github.com/bolsinga))
+- Fix typos [\#548](https://github.com/pinterest/PINRemoteImage/pull/548) ([pgrimaud](https://github.com/pgrimaud))
+- Remove unused CI directory [\#547](https://github.com/pinterest/PINRemoteImage/pull/547) ([jparise](https://github.com/jparise))
+- PINCachedAnimatedImage: Fix retain cycles [\#546](https://github.com/pinterest/PINRemoteImage/pull/546) ([bolsinga](https://github.com/bolsinga))
+- Fix up analyze for new github CI [\#545](https://github.com/pinterest/PINRemoteImage/pull/545) ([garrettmoon](https://github.com/garrettmoon))
+- Switch to GitHub Actions for CI [\#544](https://github.com/pinterest/PINRemoteImage/pull/544) ([jparise](https://github.com/jparise))
+- \#trivial Fix performance issue caused by saving encoded image data to memory cache [\#539](https://github.com/pinterest/PINRemoteImage/pull/539) ([Naituw](https://github.com/Naituw))
+- Update 3.0.0 change log and podspec [\#537](https://github.com/pinterest/PINRemoteImage/pull/537) ([ernestmama](https://github.com/ernestmama))
+- Fix memory cache content in README [\#530](https://github.com/pinterest/PINRemoteImage/pull/530) ([OhKanghoon](https://github.com/OhKanghoon))
+- Refactor remote manager task for uuid method [\#526](https://github.com/pinterest/PINRemoteImage/pull/526) ([zhongwuzw](https://github.com/zhongwuzw))
+- Burst Animated Image speed of frame index search [\#523](https://github.com/pinterest/PINRemoteImage/pull/523) ([zhongwuzw](https://github.com/zhongwuzw))
+- Set HTTPMaximumConnectionsPerHost to PINRemoteImageHTTPMaximumConnectionsPerHost only if user don't provide sessionConfiguration [\#516](https://github.com/pinterest/PINRemoteImage/pull/516) ([zhongwuzw](https://github.com/zhongwuzw))
+- Fixes re-downloading data corrupt for the same url [\#514](https://github.com/pinterest/PINRemoteImage/pull/514) ([zhongwuzw](https://github.com/zhongwuzw))
## 3.0.0 -- 2020 Jan 06
- [new] Add PINRemoteImageManagerConfiguration configuration object. [#492](https://github.com/pinterest/PINRemoteImage/pull/492) [rqueue](https://github.com/rqueue)
- [fixed] Fixes blending in animated WebP images. [#507](https://github.com/pinterest/PINRemoteImage/pull/507) [garrettmoon](https://github.com/garrettmoon)
- [fixed] Fixes support in PINAnimatedImageView for WebP animated images. [#507](https://github.com/pinterest/PINRemoteImage/pull/507) [garrettmoon](https://github.com/garrettmoon)
+- [fixed] Fixes re-downloading data corrupt for the same url. [#514](https://github.com/pinterest/PINRemoteImage/pull/514) [zhongwuzw](https://github.com/zhongwuzw)
- [new] Exposure didCompleteTask:withError: delegate method of protocol PINURLSessionManagerDelegate. [#519](https://github.com/pinterest/PINRemoteImage/pull/519) [zhongwuzw](https://github.com/zhongwuzw)
- [fixed] Fixes AnimatedImageView designated initializer not work. [#512](https://github.com/pinterest/PINRemoteImage/pull/512) [zhongwuzw](https://github.com/zhongwuzw)
- [fixed] Set bpp(bits per pixel) to 32 bit for GIF. [#511](https://github.com/pinterest/PINRemoteImage/pull/511) [zhongwuzw](https://github.com/zhongwuzw)
diff --git a/Carthage/Checkouts/PINRemoteImage/CI/build.sh b/Carthage/Checkouts/PINRemoteImage/CI/build.sh
deleted file mode 100755
index bbdb8f94..00000000
--- a/Carthage/Checkouts/PINRemoteImage/CI/build.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-
-make all
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/CI/exclude-from-build.json b/Carthage/Checkouts/PINRemoteImage/CI/exclude-from-build.json
deleted file mode 100644
index 4fa1dc86..00000000
--- a/Carthage/Checkouts/PINRemoteImage/CI/exclude-from-build.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
- "^plans/",
- "^docs/",
- "^CI/exclude-from-build.json$",
- "README.md",
- "CHANGELOG.md"
-]
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Cartfile b/Carthage/Checkouts/PINRemoteImage/Cartfile
index 75fae3e0..879dfa35 100644
--- a/Carthage/Checkouts/PINRemoteImage/Cartfile
+++ b/Carthage/Checkouts/PINRemoteImage/Cartfile
@@ -1,2 +1,3 @@
-github "pinterest/PINCache" "3.0.1-beta.8"
+git "https://chromium.googlesource.com/webm/libwebp" "v1.1.0"
+github "pinterest/PINCache" ~> 3.0.1
github "pinterest/PINOperation"
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Cartfile.resolved b/Carthage/Checkouts/PINRemoteImage/Cartfile.resolved
index 9221a04a..45ab11cf 100644
--- a/Carthage/Checkouts/PINRemoteImage/Cartfile.resolved
+++ b/Carthage/Checkouts/PINRemoteImage/Cartfile.resolved
@@ -1,2 +1,3 @@
-github "pinterest/PINCache" "3.0.1-beta.8"
-github "pinterest/PINOperation" "1.1.2"
+git "https://chromium.googlesource.com/webm/libwebp" "v1.1.0"
+github "pinterest/PINCache" "3.0.1"
+github "pinterest/PINOperation" "1.2"
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml
new file mode 100644
index 00000000..71c75fe7
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github/workflows/ci.yaml
@@ -0,0 +1,51 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ name: Build
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v1
+ - name: Analyze and Test
+ run: |
+ xcodebuild clean analyze test \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -project PINCache.xcodeproj \
+ -scheme PINCache \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Lint
+ run: pod lib lint
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Update
+ run: carthage update --no-use-binaries --no-build
+ - name: Build
+ run: carthage build --no-skip-current
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github_changelog_generator b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github_changelog_generator
new file mode 100644
index 00000000..d0b7a525
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=3.0.1-beta.8
+future-release=3.0.1
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CHANGELOG.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CHANGELOG.md
index 9983beb4..8d30a13f 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CHANGELOG.md
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CHANGELOG.md
@@ -1,6 +1,31 @@
-## master
-
-* Add your own contributions to the next release on the line below this with your name.
+# Changelog
+
+## [3.0.1](https://github.com/Pinterest/PINCache/tree/3.0.1) (2020-08-20)
+
+[Full Changelog](https://github.com/Pinterest/PINCache/compare/3.0.1-beta.8...3.0.1)
+
+**Implemented enhancements:**
+
+- Support Catalyst [\#272](https://github.com/pinterest/PINCache/pull/272) ([cgmaier](https://github.com/cgmaier))
+
+**Merged pull requests:**
+
+- Update PINOperation [\#277](https://github.com/pinterest/PINCache/pull/277) ([garrettmoon](https://github.com/garrettmoon))
+- Fix PINCacheTests compiling in Xcode 12.0b4 [\#276](https://github.com/pinterest/PINCache/pull/276) ([arangato](https://github.com/arangato))
+- Remove BUCK files [\#274](https://github.com/pinterest/PINCache/pull/274) ([adlerj](https://github.com/adlerj))
+- Fix compiling in Xcode 12.0b4 [\#273](https://github.com/pinterest/PINCache/pull/273) ([zacwest](https://github.com/zacwest))
+- Fix the grammar in an assertion failure message [\#270](https://github.com/pinterest/PINCache/pull/270) ([jparise](https://github.com/jparise))
+- Add Carthage for watchOS, fix macOS min deployment target version [\#269](https://github.com/pinterest/PINCache/pull/269) ([dreampiggy](https://github.com/dreampiggy))
+- Remove the unused CI directory [\#265](https://github.com/pinterest/PINCache/pull/265) ([jparise](https://github.com/jparise))
+- Fix up analyze for github CI [\#264](https://github.com/pinterest/PINCache/pull/264) ([garrettmoon](https://github.com/garrettmoon))
+- Use correct class name in NSAssert\(\) messages [\#263](https://github.com/pinterest/PINCache/pull/263) ([jparise](https://github.com/jparise))
+- Check fileURL outside of the locked scope [\#262](https://github.com/pinterest/PINCache/pull/262) ([jparise](https://github.com/jparise))
+- Remove Danger from the project [\#261](https://github.com/pinterest/PINCache/pull/261) ([jparise](https://github.com/jparise))
+- Switch to GitHub Actions for CI [\#259](https://github.com/pinterest/PINCache/pull/259) ([jparise](https://github.com/jparise))
+- Test that the "remove object" blocks are called [\#258](https://github.com/pinterest/PINCache/pull/258) ([jparise](https://github.com/jparise))
+- Discrepancy between Header Comment and Implementation \#trivial [\#257](https://github.com/pinterest/PINCache/pull/257) ([jlaws](https://github.com/jlaws))
+- Optimization `PINMemoryCache` trim to date [\#252](https://github.com/pinterest/PINCache/pull/252) ([kinarobin](https://github.com/kinarobin))
+- Optimize `PINMemoryCache` remove objects when receive memory warning notification [\#251](https://github.com/pinterest/PINCache/pull/251) ([kinarobin](https://github.com/kinarobin))
## 3.0.1 -- Beta 8
- [fix] Initing PINCache with TTL enabled should enable TTL on PINMemoryCache. [#246](https://github.com/pinterest/PINCache/pull/246)
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..8b4e45e2
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Code of Conduct
+
+At Pinterest, we work hard to ensure that our work environment is welcoming
+and inclusive to as many people as possible. We are committed to creating this
+environment for everyone involved in our open source projects as well. We
+welcome all participants regardless of ability, age, ethnicity, identified
+gender, religion (or lack there of), sexual orientation and socioeconomic
+status.
+
+This code of conduct details our expectations for upholding these values.
+
+## Good behavior
+
+We expect members of our community to exhibit good behavior including (but of
+course not limited to):
+
+- Using intentional and empathetic language.
+- Focusing on resolving instead of escalating conflict.
+- Providing constructive feedback.
+
+## Unacceptable behavior
+
+Some examples of unacceptable behavior (again, this is not an exhaustive
+list):
+
+- Harassment, publicly or in private.
+- Trolling.
+- Sexual advances (this isn’t the place for it).
+- Publishing other’s personal information.
+- Any behavior which would be deemed unacceptable in a professional environment.
+
+## Recourse
+
+If you are witness to or the target of unacceptable behavior, it should be
+reported to Pinterest at opensource-policy@pinterest.com. All reporters will
+be kept confidential and an appropriate response for each incident will be
+evaluated.
+
+If the maintainers do not uphold and enforce this code of conduct in
+good faith, community leadership will hold them accountable.
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile
index fba0de21..a7e3d640 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile
@@ -1 +1 @@
-github "pinterest/PINOperation" ~> 1.1.0
\ No newline at end of file
+github "pinterest/PINOperation" ~> 1.2.0
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile.resolved b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile.resolved
index d3f8bfc0..841e9a7d 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile.resolved
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Cartfile.resolved
@@ -1 +1 @@
-github "pinterest/PINOperation" "1.1"
+github "pinterest/PINOperation" "1.2"
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
new file mode 100644
index 00000000..cfe85acc
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github/workflows/ci.yml
@@ -0,0 +1,80 @@
+---
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ name: Build
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Analyze and Test
+ run: |
+ xcodebuild clean analyze test \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -project PINOperation.xcodeproj \
+ -scheme PINOperation \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
+ cocoapods:
+ name: CocoaPods
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Lint
+ run: pod lib lint
+ carthage:
+ name: Carthage
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build
+ run: carthage build --no-skip-current
+ spm:
+ name: Swift Package Manager tests
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Test
+ run: swift test
+ example:
+ name: Build Example project
+ runs-on: macOS-latest
+ strategy:
+ matrix:
+ platform: ['iOS Simulator,name=iPhone 8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Pods
+ run: cd Example && pod install
+ - name: Build
+ run: |
+ cd Example && xcodebuild clean analyze \
+ -destination "platform=${{ matrix.platform }}" \
+ -sdk "iphonesimulator" \
+ -workspace PINOperationExample.xcworkspace \
+ -scheme PINOperationExample \
+ ONLY_ACTIVE_ARCH=NO \
+ CODE_SIGNING_REQUIRED=NO \
+ CLANG_ANALYZER_OUTPUT=plist-html \
+ CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang" \
+ | xcpretty
+ if [[ -n `find $(pwd)/clang -name "*.html"` ]] ; then rm -rf $(pwd)/clang; exit 1; fi
+ rm -rf $(pwd)/clang
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator
new file mode 100644
index 00000000..19665f65
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.github_changelog_generator
@@ -0,0 +1,3 @@
+issues=false
+since-tag=1.1.1
+future-release=1.2
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
index fd433d36..4021767b 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.gitignore
@@ -52,3 +52,6 @@ Carthage/Build
# Bundler
.bundle
vendor
+
+# Example project
+Example/Pods
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..919434a6
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
index 76cacd3d..c7ade9d1 100755
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/BUCK
@@ -1,8 +1,9 @@
apple_library(
name = 'PINOperation',
- exported_headers = glob(['PINOperation/*.h']),
+ modular = True,
+ exported_headers = glob(['Source/*.h']),
srcs =
- glob(['PINOperation/*.m']),
+ glob(['Source/*.m']),
preprocessor_flags = ['-fobjc-arc'],
lang_preprocessor_flags = {
'C': ['-std=gnu99'],
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
index 1844305f..221ad3cb 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CHANGELOG.md
@@ -1,5 +1,28 @@
-## master
-* Add your own contributions to the next release on the line below this with your name.
+## [1.2](https://github.com/Pinterest/PINOperation/tree/1.2) (2020-06-30)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.2...1.2)
+
+**Merged pull requests:**
+
+- Swift Package Manager support [\#32](https://github.com/pinterest/PINOperation/pull/32) ([martinpucik](https://github.com/martinpucik))
+- Add Carthage for watchOS, dependent by PINCache [\#31](https://github.com/pinterest/PINOperation/pull/31) ([dreampiggy](https://github.com/dreampiggy))
+- Fix analyzing [\#30](https://github.com/pinterest/PINOperation/pull/30) ([garrettmoon](https://github.com/garrettmoon))
+- Standardize our GitHub Actions CI workflow [\#29](https://github.com/pinterest/PINOperation/pull/29) ([jparise](https://github.com/jparise))
+- Github CI [\#26](https://github.com/pinterest/PINOperation/pull/26) ([rahul-malik](https://github.com/rahul-malik))
+- Fixes coalesce operation race condition [\#24](https://github.com/pinterest/PINOperation/pull/24) ([zhongwuzw](https://github.com/zhongwuzw))
+
+## [1.1.2](https://github.com/Pinterest/PINOperation/tree/1.1.2) (2019-06-11)
+
+[Full Changelog](https://github.com/Pinterest/PINOperation/compare/1.1.1...1.1.2)
+
+**Merged pull requests:**
+
+- Modernizing project [\#21](https://github.com/pinterest/PINOperation/pull/21) ([garrettmoon](https://github.com/garrettmoon))
+- Updates BUCK build file to match source layout. [\#20](https://github.com/pinterest/PINOperation/pull/20) ([RCacheaux](https://github.com/RCacheaux))
+- 1.1.1 release [\#19](https://github.com/pinterest/PINOperation/pull/19) ([garrettmoon](https://github.com/garrettmoon))
+
+## 1.1.1 -- 2018 February 3
+* Cleanup warnings [garrett](https://github.com/garrettmoon)
## 1.1 -- 2017 October 7
* Deprecate addOperation: in favor of scheduleOperation: [garrett](https://github.com/garrettmoon)
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
index abc6f913..03853aa7 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CI/exclude-from-build.json
@@ -1,5 +1,7 @@
[
"^plans/",
"^docs/",
- "^CI/exclude-from-build.json$"
+ "^CI/exclude-from-build.json$",
+ "^README.md$",
+ "^CHANGELOG.md$"
]
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..8b4e45e2
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/CODE_OF_CONDUCT.md
@@ -0,0 +1,40 @@
+# Code of Conduct
+
+At Pinterest, we work hard to ensure that our work environment is welcoming
+and inclusive to as many people as possible. We are committed to creating this
+environment for everyone involved in our open source projects as well. We
+welcome all participants regardless of ability, age, ethnicity, identified
+gender, religion (or lack there of), sexual orientation and socioeconomic
+status.
+
+This code of conduct details our expectations for upholding these values.
+
+## Good behavior
+
+We expect members of our community to exhibit good behavior including (but of
+course not limited to):
+
+- Using intentional and empathetic language.
+- Focusing on resolving instead of escalating conflict.
+- Providing constructive feedback.
+
+## Unacceptable behavior
+
+Some examples of unacceptable behavior (again, this is not an exhaustive
+list):
+
+- Harassment, publicly or in private.
+- Trolling.
+- Sexual advances (this isn’t the place for it).
+- Publishing other’s personal information.
+- Any behavior which would be deemed unacceptable in a professional environment.
+
+## Recourse
+
+If you are witness to or the target of unacceptable behavior, it should be
+reported to Pinterest at opensource-policy@pinterest.com. All reporters will
+be kept confidential and an appropriate response for each incident will be
+evaluated.
+
+If the maintainers do not uphold and enforce this code of conduct in
+good faith, community leadership will hold them accountable.
\ No newline at end of file
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..382c6346
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcodeproj/project.pbxproj
@@ -0,0 +1,391 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1387274E245D5BB500C1F56D /* AppDelegate.swift */; };
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13872757245D5BB800C1F56D /* Assets.xcassets */; };
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */; };
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 13872764245D5D8200C1F56D /* MainViewController.m */; };
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PINOperationExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 13872757245D5BB800C1F56D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 1387275A245D5BB800C1F56D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 1387275C245D5BB800C1F56D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PINOperationExample-Bridging-Header.h"; sourceTree = ""; };
+ 13872763245D5D8200C1F56D /* MainViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; };
+ 13872764245D5D8200C1F56D /* MainViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; };
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.release.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.release.xcconfig"; sourceTree = ""; };
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PINOperationExample.debug.xcconfig"; path = "Target Support Files/Pods-PINOperationExample/Pods-PINOperationExample.debug.xcconfig"; sourceTree = ""; };
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PINOperationExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 13872748245D5BB500C1F56D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6DD78925193625590E803994 /* libPods-PINOperationExample.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 110EBBE34DCD59092AC3306C /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */,
+ 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ 13872742245D5BB500C1F56D = {
+ isa = PBXGroup;
+ children = (
+ 1387274D245D5BB500C1F56D /* PINOperationExample */,
+ 1387274C245D5BB500C1F56D /* Products */,
+ 110EBBE34DCD59092AC3306C /* Pods */,
+ 5C200BF654CB547E7117CE2B /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 1387274C245D5BB500C1F56D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274B245D5BB500C1F56D /* PINOperationExample.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 1387274D245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXGroup;
+ children = (
+ 1387274E245D5BB500C1F56D /* AppDelegate.swift */,
+ 13872763245D5D8200C1F56D /* MainViewController.h */,
+ 13872764245D5D8200C1F56D /* MainViewController.m */,
+ 13872757245D5BB800C1F56D /* Assets.xcassets */,
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */,
+ 1387275C245D5BB800C1F56D /* Info.plist */,
+ 13872762245D5D8200C1F56D /* PINOperationExample-Bridging-Header.h */,
+ );
+ path = PINOperationExample;
+ sourceTree = "";
+ };
+ 5C200BF654CB547E7117CE2B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 7BDDE545CD189CC0B424ECD0 /* libPods-PINOperationExample.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1387274A245D5BB500C1F56D /* PINOperationExample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */;
+ buildPhases = (
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */,
+ 13872747245D5BB500C1F56D /* Sources */,
+ 13872748245D5BB500C1F56D /* Frameworks */,
+ 13872749245D5BB500C1F56D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PINOperationExample;
+ productName = PINOperationExample;
+ productReference = 1387274B245D5BB500C1F56D /* PINOperationExample.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 13872743245D5BB500C1F56D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1140;
+ LastUpgradeCheck = 1140;
+ ORGANIZATIONNAME = Pinterest;
+ TargetAttributes = {
+ 1387274A245D5BB500C1F56D = {
+ CreatedOnToolsVersion = 11.4.1;
+ LastSwiftMigration = 1140;
+ };
+ };
+ };
+ buildConfigurationList = 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 13872742245D5BB500C1F56D;
+ productRefGroup = 1387274C245D5BB500C1F56D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1387274A245D5BB500C1F56D /* PINOperationExample */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 13872749245D5BB500C1F56D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387275B245D5BB800C1F56D /* LaunchScreen.storyboard in Resources */,
+ 13872758245D5BB800C1F56D /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 6C859F1C363A79193D42EFC9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-PINOperationExample-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 13872747245D5BB500C1F56D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1387274F245D5BB500C1F56D /* AppDelegate.swift in Sources */,
+ 13872765245D5D8200C1F56D /* MainViewController.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 13872759245D5BB800C1F56D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 1387275A245D5BB800C1F56D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 1387275D245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ 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";
+ };
+ name = Debug;
+ };
+ 1387275E245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 13872760245D5BB800C1F56D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2F8A2FBFCEF95140E01995E8 /* Pods-PINOperationExample.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 13872761245D5BB800C1F56D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 15635AC2BB0501241D3126BA /* Pods-PINOperationExample.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = "";
+ INFOPLIST_FILE = PINOperationExample/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperationExample;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "PINOperationExample/PINOperationExample-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 13872746245D5BB500C1F56D /* Build configuration list for PBXProject "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1387275D245D5BB800C1F56D /* Debug */,
+ 1387275E245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1387275F245D5BB800C1F56D /* Build configuration list for PBXNativeTarget "PINOperationExample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13872760245D5BB800C1F56D /* Debug */,
+ 13872761245D5BB800C1F56D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 13872743245D5BB500C1F56D /* Project object */;
+}
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..4cdc4885
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Examples/Example/PINRemoteImage.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from Carthage/Checkouts/PINRemoteImage/Examples/Example/PINRemoteImage.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
new file mode 100644
index 00000000..7aa52db8
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/AppDelegate.swift
@@ -0,0 +1,31 @@
+//
+// AppDelegate.swift
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+final class AppDelegate: UIResponder, UIApplicationDelegate {
+ private let queue: PINOperationQueue = PINOperationQueue(maxConcurrentOperations: 5)
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ let operationCount = 100
+ let group = DispatchGroup()
+ for _ in 0..
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
new file mode 100644
index 00000000..75404a26
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/Info.plist
@@ -0,0 +1,41 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
new file mode 100644
index 00000000..df2e69c3
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.h
@@ -0,0 +1,17 @@
+//
+// MainViewController.h
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MainViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
new file mode 100644
index 00000000..50d0c95d
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/MainViewController.m
@@ -0,0 +1,41 @@
+//
+// MainViewController.m
+// PINOperationExample
+//
+// Created by Martin Púčik on 02/05/2020.
+// Copyright © 2020 Pinterest. All rights reserved.
+//
+
+#import "MainViewController.h"
+#import
+//#import
+
+@interface MainViewController ()
+@property (nonatomic, strong) PINOperationQueue *queue;
+@end
+
+@implementation MainViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ self.queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:5];
+
+ const NSUInteger operationCount = 100;
+ dispatch_group_t group = dispatch_group_create();
+
+ for (NSUInteger count = 0; count < operationCount; count++) {
+ dispatch_group_enter(group);
+ [self.queue scheduleOperation:^{
+ dispatch_group_leave(group);
+ } withPriority:PINOperationQueuePriorityDefault];
+ }
+
+ NSUInteger success = dispatch_group_wait(group, [self timeout]);
+ NSAssert(success == 0, @"Timed out before completing 100 operations");
+}
+
+- (dispatch_time_t)timeout {
+ return dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20 * NSEC_PER_SEC));
+}
+
+@end
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
new file mode 100644
index 00000000..f3b5f384
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/PINOperationExample/PINOperationExample-Bridging-Header.h
@@ -0,0 +1 @@
+#import
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile
new file mode 100644
index 00000000..ae5fd622
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile
@@ -0,0 +1,6 @@
+source 'https://cdn.cocoapods.org/'
+platform :ios, '8.0'
+
+target 'PINOperationExample' do
+ pod 'PINOperation', :path => '../'
+end
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock
new file mode 100644
index 00000000..266cc700
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Example/Podfile.lock
@@ -0,0 +1,16 @@
+PODS:
+ - PINOperation (1.1.2)
+
+DEPENDENCIES:
+ - PINOperation (from `../`)
+
+EXTERNAL SOURCES:
+ PINOperation:
+ :path: "../"
+
+SPEC CHECKSUMS:
+ PINOperation: 24b774353ca248fcf87d67b2d61eef42087c125a
+
+PODFILE CHECKSUM: b83a75d584abe07185e7be951687702dadbabf84
+
+COCOAPODS: 1.9.1
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
index ecea6f8b..7e598595 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PINOperation'
- s.version = '1.1'
+ s.version = '1.2'
s.homepage = 'https://github.com/pinterest/PINOperation'
s.summary = 'Fast, concurrency-limited task queue for iOS and OS X.'
s.authors = { 'Garrett Moon' => 'garrett@pinterest.com' }
@@ -8,7 +8,7 @@ Pod::Spec.new do |s|
s.license = { :type => 'Apache 2.0', :file => 'LICENSE.txt' }
s.requires_arc = true
s.frameworks = 'Foundation'
- s.ios.deployment_target = '5.0'
+ s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.8'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
index abf27c9b..ddcb88c2 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/project.pbxproj
@@ -7,6 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
+ 3201179424444862004FD783 /* PINOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105801E2711B700890935 /* PINOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105811E2711B700890935 /* PINOperationGroup.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105831E2711B700890935 /* PINOperationMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105841E2711B700890935 /* PINOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0105861E2711B700890935 /* PINOperationTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105821E2711B700890935 /* PINOperationGroup.m */; };
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0105851E2711B700890935 /* PINOperationQueue.m */; };
CC01055B1E27116600890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01052D1E27110D00890935 /* PINOperation.framework */; };
CC01056A1E27117300890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01053D1E27113700890935 /* PINOperation.framework */; };
CC0105791E27117F00890935 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC01054A1E27114300890935 /* PINOperation.framework */; };
@@ -64,6 +71,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 3201178C24444859004FD783 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01052D1E27110D00890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01053D1E27113700890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CC01054A1E27114300890935 /* PINOperation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINOperation.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -84,6 +92,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 3201178924444859004FD783 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105291E27110D00890935 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -153,6 +168,7 @@
CC0105561E27116600890935 /* PINOperationTests.xctest */,
CC0105651E27117300890935 /* PINOperation-tvOSTests.xctest */,
CC0105741E27117F00890935 /* PINOperation-macOSTests.xctest */,
+ 3201178C24444859004FD783 /* PINOperation.framework */,
);
name = Products;
sourceTree = "";
@@ -185,6 +201,18 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
+ 3201178724444859004FD783 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179824444862004FD783 /* PINOperationTypes.h in Headers */,
+ 3201179524444862004FD783 /* PINOperationGroup.h in Headers */,
+ 3201179424444862004FD783 /* PINOperation.h in Headers */,
+ 3201179724444862004FD783 /* PINOperationQueue.h in Headers */,
+ 3201179624444862004FD783 /* PINOperationMacros.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052A1E27110D00890935 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -224,6 +252,24 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 3201178B24444859004FD783 /* PINOperation-watchOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */;
+ buildPhases = (
+ 3201178724444859004FD783 /* Headers */,
+ 3201178824444859004FD783 /* Sources */,
+ 3201178924444859004FD783 /* Frameworks */,
+ 3201178A24444859004FD783 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "PINOperation-watchOS";
+ productName = "PINOperation-watchOS";
+ productReference = 3201178C24444859004FD783 /* PINOperation.framework */;
+ productType = "com.apple.product-type.framework";
+ };
CC01052C1E27110D00890935 /* PINOperation */ = {
isa = PBXNativeTarget;
buildConfigurationList = CC0105351E27110D00890935 /* Build configuration list for PBXNativeTarget "PINOperation" */;
@@ -338,9 +384,13 @@
CC0105241E27110D00890935 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0900;
+ LastUpgradeCheck = 1010;
ORGANIZATIONNAME = Pinterest;
TargetAttributes = {
+ 3201178B24444859004FD783 = {
+ CreatedOnToolsVersion = 11.4;
+ ProvisioningStyle = Automatic;
+ };
CC01052C1E27110D00890935 = {
CreatedOnToolsVersion = 7.3.1;
};
@@ -363,9 +413,10 @@
};
buildConfigurationList = CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */;
compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
+ Base,
en,
);
mainGroup = CC0105231E27110D00890935;
@@ -379,11 +430,19 @@
CC0105641E27117300890935 /* PINOperation-tvOSTests */,
CC0105491E27114300890935 /* PINOperation-macOS */,
CC0105731E27117F00890935 /* PINOperation-macOSTests */,
+ 3201178B24444859004FD783 /* PINOperation-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 3201178A24444859004FD783 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC01052B1E27110D00890935 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -429,6 +488,15 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 3201178824444859004FD783 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 3201179924444862004FD783 /* PINOperationGroup.m in Sources */,
+ 3201179A24444862004FD783 /* PINOperationQueue.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105281E27110D00890935 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -504,6 +572,61 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 3201179124444859004FD783 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Debug;
+ };
+ 3201179224444859004FD783 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "com.pinterest.PINOperation-watchOS";
+ PRODUCT_NAME = PINOperation;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Release;
+ };
CC0105331E27110D00890935 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -517,12 +640,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -573,12 +699,15 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@@ -699,7 +828,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation;
PRODUCT_NAME = PINOperation;
SDKROOT = macosx;
@@ -720,7 +849,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINOperation;
PRODUCT_NAME = PINOperation;
SDKROOT = macosx;
@@ -803,6 +932,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 3201179324444859004FD783 /* Build configuration list for PBXNativeTarget "PINOperation-watchOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3201179124444859004FD783 /* Debug */,
+ 3201179224444859004FD783 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
CC0105271E27110D00890935 /* Build configuration list for PBXProject "PINOperation" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
index b06db321..ebc5ab8b 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation-macOS.xcscheme
@@ -1,6 +1,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
index d7b132f1..82056667 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/PINOperation.xcodeproj/xcshareddata/xcschemes/PINOperation.xcscheme
@@ -1,6 +1,6 @@
--user Pinterest --project PINOperation`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog.
+- Update `spec.version` within `PINOperation.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`.
+- Create a new PR with the updated `PINOperation.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it.
+- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINOperation/releases/new). Use the generated changelog for the new release.
+- Push to Cocoapods with `pod trunk push`
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
index 1f67472b..68b074d2 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperation.h
@@ -6,7 +6,7 @@
// Copyright © 2017 Pinterest. All rights reserved.
//
-#import
-#import
-#import
-#import
+#import "PINOperationMacros.h"
+#import "PINOperationTypes.h"
+#import "PINOperationQueue.h"
+#import "PINOperationGroup.h"
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
index dba6a5c6..ddd2ed01 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationGroup.m
@@ -81,7 +81,7 @@ - (void)start
dispatch_block_t originalOperation = _operations[idx];
dispatch_block_t groupBlock = ^{
originalOperation();
- dispatch_group_leave(_group);
+ dispatch_group_leave(self->_group);
};
id operationReference = [_operationQueue scheduleOperation:groupBlock withPriority:[_operationPriorities[idx] unsignedIntegerValue]];
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
index 7009bc6c..5d0a38fe 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Source/PINOperationQueue.m
@@ -291,10 +291,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations
dispatch_async(_semaphoreQueue, ^{
while (difference != 0) {
if (difference > 0) {
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
difference--;
} else {
- dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER);
+ dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER);
difference++;
}
}
@@ -305,16 +305,10 @@ - (void)setMaxConcurrentOperations:(NSUInteger)maxConcurrentOperations
- (BOOL)locked_cancelOperation:(id )operationReference
{
- BOOL success = NO;
PINOperation *operation = [_referenceToOperations objectForKey:operationReference];
- if (operation) {
- NSMutableOrderedSet *queue = [self operationQueueWithPriority:operation.priority];
- if ([queue containsObject:operation]) {
- success = YES;
- [queue removeObject:operation];
- [_queuedOperations removeObject:operation];
- dispatch_group_leave(_group);
- }
+ BOOL success = [self locked_removeOperation:operation];
+ if (success) {
+ dispatch_group_leave(_group);
}
return success;
}
@@ -353,10 +347,10 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial
for (dispatch_block_t completion in operation.completions) {
completion();
}
- dispatch_group_leave(_group);
+ dispatch_group_leave(self->_group);
[self lock];
- _serialQueueBusy = NO;
+ self->_serialQueueBusy = NO;
[self unlock];
//see if there are any other operations
@@ -379,22 +373,22 @@ - (void)scheduleNextOperations:(BOOL)onlyCheckSerial
}
dispatch_async(_semaphoreQueue, ^{
- dispatch_semaphore_wait(_concurrentSemaphore, DISPATCH_TIME_FOREVER);
+ dispatch_semaphore_wait(self->_concurrentSemaphore, DISPATCH_TIME_FOREVER);
[self lock];
PINOperation *operation = [self locked_nextOperationByPriority];
[self unlock];
if (operation) {
- dispatch_async(_concurrentQueue, ^{
+ dispatch_async(self->_concurrentQueue, ^{
operation.block(operation.data);
for (dispatch_block_t completion in operation.completions) {
completion();
}
- dispatch_group_leave(_group);
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_group_leave(self->_group);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
});
} else {
- dispatch_semaphore_signal(_concurrentSemaphore);
+ dispatch_semaphore_signal(self->_concurrentSemaphore);
}
});
}
@@ -448,13 +442,20 @@ - (void)waitUntilAllOperationsAreFinished
}
//Call with lock held
-- (void)locked_removeOperation:(PINOperation *)operation
+- (BOOL)locked_removeOperation:(PINOperation *)operation
{
if (operation) {
NSMutableOrderedSet *priorityQueue = [self operationQueueWithPriority:operation.priority];
- [priorityQueue removeObject:operation];
- [_queuedOperations removeObject:operation];
+ if ([priorityQueue containsObject:operation]) {
+ [priorityQueue removeObject:operation];
+ [_queuedOperations removeObject:operation];
+ if (operation.identifier) {
+ [_identifierToOperations removeObjectForKey:operation.identifier];
+ }
+ return YES;
+ }
}
+ return NO;
}
- (void)lock
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
index a94ac25f..7505d56f 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationGroupTests.m
@@ -6,12 +6,11 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
-#import
+@import PINOperation;
+#import
#import
-#import
-
static NSTimeInterval PINOperationGroupTestBlockTimeout = 20;
@interface PINOperationGroupTests : XCTestCase
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
index 70ebb7f8..844968f2 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Carthage/Checkouts/PINOperation/Tests/PINOperationQueueTests.m
@@ -6,8 +6,8 @@
// Copyright © 2016 Pinterest. All rights reserved.
//
+@import PINOperation;
#import
-#import
#import
static NSTimeInterval PINOperationQueueTestBlockTimeout = 20;
@@ -141,6 +141,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation
__block NSUInteger runningOperationCount = 0;
__block BOOL operationCountMaxedOut = NO;
+ XCTAssert(queue.maxConcurrentOperations == maxOperations, @"Max concurrent operations not correctly set.");
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
for (NSUInteger count = 0; count < operationCount; count++) {
@@ -154,7 +155,7 @@ - (void)helperConfirmMaxOperations:(NSUInteger)maxOperations queue:(PINOperation
XCTAssert(runningOperationCount <= maxOperations, @"Running too many operations at once: %lu", (unsigned long)runningOperationCount);
}
- usleep(1000);
+ usleep(10000);
@synchronized (self) {
runningOperationCount--;
@@ -512,10 +513,10 @@ - (void)testChangingMaximumNumberOfOperations
PINOperationQueue *queue = [[PINOperationQueue alloc] initWithMaxConcurrentOperations:2];
[self helperConfirmMaxOperations:2 queue:queue];
queue.maxConcurrentOperations = 4;
- usleep(1000);
+ usleep(10000);
[self helperConfirmMaxOperations:4 queue:queue];
queue.maxConcurrentOperations = 2;
- usleep(1000);
+ usleep(10000);
[self helperConfirmMaxOperations:2 queue:queue];
}
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Makefile b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Makefile
index ccc365f6..30b505cd 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Makefile
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Makefile
@@ -1,4 +1,4 @@
-PLATFORM="platform=iOS Simulator,name=iPhone 7"
+PLATFORM="platform=iOS Simulator,name=iPhone 8"
SDK="iphonesimulator"
SHELL=/bin/bash -o pipefail
@@ -25,4 +25,4 @@ carthage:
carthage update --no-use-binaries --no-build
carthage build --no-skip-current
-all: carthage lint test analyze
\ No newline at end of file
+all: carthage lint test analyze
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.podspec b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.podspec
index eaa8c104..e1dc9cfb 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.podspec
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'PINCache'
- s.version = '3.0.1-beta.8'
+ s.version = '3.0.1'
s.homepage = 'https://github.com/pinterest/PINCache'
s.summary = 'Fast, thread safe, parallel object cache for iOS and OS X.'
s.authors = { 'Garrett Moon' => 'garrett@pinterest.com', 'Justin Ouellette' => 'jstn@tumblr.com' }
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
s.ios.weak_frameworks = 'UIKit'
s.osx.weak_frameworks = 'AppKit'
s.ios.deployment_target = '8.0'
- s.osx.deployment_target = '10.11'
+ s.osx.deployment_target = '10.8'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
pch_PIN = <<-EOS
@@ -22,7 +22,7 @@ EOS
s.prefix_header_contents = pch_PIN
s.subspec 'Core' do |sp|
sp.source_files = 'Source/*.{h,m}'
- sp.dependency 'PINOperation', '~> 1.1.1'
+ sp.dependency 'PINOperation', '~> 1.2.0'
end
s.subspec 'Arc-exception-safe' do |sp|
sp.dependency 'PINCache/Core'
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
index f6340ace..e4d3d687 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/project.pbxproj
@@ -7,6 +7,15 @@
objects = {
/* Begin PBXBuildFile section */
+ 320117C524444E3C004FD783 /* PINCaching.h in Headers */ = {isa = PBXBuildFile; fileRef = 6928EED21E4160EE00B5D975 /* PINCaching.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C624444E3D004FD783 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106051E271A9000890935 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C724444E3D004FD783 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0106061E271A9000890935 /* PINCache.m */; };
+ 320117C824444E3D004FD783 /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106071E271A9000890935 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117C924444E3D004FD783 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC0106081E271A9000890935 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117CA24444E3D004FD783 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC0106091E271A9000890935 /* PINDiskCache.m */; };
+ 320117CB24444E3D004FD783 /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CC01060A1E271A9000890935 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 320117CC24444E3D004FD783 /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CC01060B1E271A9000890935 /* PINMemoryCache.m */; };
+ 320117CD24444E3D004FD783 /* PINCacheMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 68A0FBFF1E4D3282000B552D /* PINCacheMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
6818C1491E55020400875DB7 /* PINCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC0105CE1E271A4900890935 /* PINCache.framework */; };
6818C2881E55217D00875DB7 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6818C2871E55217D00875DB7 /* PINOperation.framework */; };
6818C28A1E55218400875DB7 /* PINOperation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6818C2891E55218400875DB7 /* PINOperation.framework */; };
@@ -54,6 +63,20 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
+ 320117AC24444DF7004FD783 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 3201178C24444859004FD783;
+ remoteInfo = "PINOperation-watchOS";
+ };
+ 320117B424444E23004FD783 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 3201178B24444859004FD783;
+ remoteInfo = "PINOperation-watchOS";
+ };
6818C2991E564C1100875DB7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6818C2901E564C1100875DB7 /* PINOperation.xcodeproj */;
@@ -171,6 +194,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 320117A124444DF7004FD783 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6818C2871E55217D00875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = "../../Library/Developer/Xcode/DerivedData/PINCache-cxjnintatqynfgceozwzgezmeypl/Build/Products/Debug-iphonesimulator/PINOperation.framework"; sourceTree = ""; };
6818C2891E55218400875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = "../../Library/Developer/Xcode/DerivedData/PINCache-cxjnintatqynfgceozwzgezmeypl/Build/Products/Debug-appletvsimulator/PINOperation.framework"; sourceTree = ""; };
6818C28B1E55218A00875DB7 /* PINOperation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PINOperation.framework; path = Carthage/Checkouts/PINOperation/build/Debug/PINOperation.framework; sourceTree = ""; };
@@ -202,6 +226,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 3201179E24444DF7004FD783 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AD1E271A1600890935 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -272,6 +303,7 @@
6818C2A01E564C1100875DB7 /* PINOperation-tvOSTests.xctest */,
6818C2A21E564C1100875DB7 /* PINOperation.framework */,
6818C2A41E564C1100875DB7 /* PINOperation-macOSTests.xctest */,
+ 320117AD24444DF7004FD783 /* PINOperation.framework */,
);
name = Products;
sourceTree = "";
@@ -296,6 +328,7 @@
CC0105DA1E271A5C00890935 /* PINCacheTests.xctest */,
CC0105E91E271A6400890935 /* PINCache-tvOSTests.xctest */,
CC0105F81E271A7300890935 /* PINCache-macOSTests.xctest */,
+ 320117A124444DF7004FD783 /* PINCache.framework */,
);
name = Products;
sourceTree = "";
@@ -343,6 +376,19 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
+ 3201179C24444DF7004FD783 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 320117CB24444E3D004FD783 /* PINMemoryCache.h in Headers */,
+ 320117C624444E3D004FD783 /* PINCache.h in Headers */,
+ 320117C824444E3D004FD783 /* PINCacheObjectSubscripting.h in Headers */,
+ 320117CD24444E3D004FD783 /* PINCacheMacros.h in Headers */,
+ 320117C924444E3D004FD783 /* PINDiskCache.h in Headers */,
+ 320117C524444E3C004FD783 /* PINCaching.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AE1E271A1600890935 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@@ -386,6 +432,25 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
+ 320117A024444DF7004FD783 /* PINCache-watchOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 320117AE24444DF7004FD783 /* Build configuration list for PBXNativeTarget "PINCache-watchOS" */;
+ buildPhases = (
+ 3201179D24444DF7004FD783 /* Sources */,
+ 3201179E24444DF7004FD783 /* Frameworks */,
+ 3201179C24444DF7004FD783 /* Headers */,
+ 3201179F24444DF7004FD783 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 320117B524444E23004FD783 /* PBXTargetDependency */,
+ );
+ name = "PINCache-watchOS";
+ productName = "PINCache-watchOS";
+ productReference = 320117A124444DF7004FD783 /* PINCache.framework */;
+ productType = "com.apple.product-type.framework";
+ };
CC0105B01E271A1600890935 /* PINCache */ = {
isa = PBXNativeTarget;
buildConfigurationList = CC0105B91E271A1600890935 /* Build configuration list for PBXNativeTarget "PINCache" */;
@@ -509,6 +574,10 @@
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = Pinterest;
TargetAttributes = {
+ 320117A024444DF7004FD783 = {
+ CreatedOnToolsVersion = 11.4;
+ ProvisioningStyle = Automatic;
+ };
CC0105B01E271A1600890935 = {
CreatedOnToolsVersion = 7.3.1;
};
@@ -553,11 +622,19 @@
CC0105E81E271A6400890935 /* PINCache-tvOSTests */,
CC0105CD1E271A4900890935 /* PINCache-macOS */,
CC0105F71E271A7300890935 /* PINCache-macOSTests */,
+ 320117A024444DF7004FD783 /* PINCache-watchOS */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
+ 320117AD24444DF7004FD783 /* PINOperation.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = PINOperation.framework;
+ remoteRef = 320117AC24444DF7004FD783 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
6818C29A1E564C1100875DB7 /* PINOperation.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
@@ -603,6 +680,13 @@
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
+ 3201179F24444DF7004FD783 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AF1E271A1600890935 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -651,6 +735,16 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 3201179D24444DF7004FD783 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 320117C724444E3D004FD783 /* PINCache.m in Sources */,
+ 320117CC24444E3D004FD783 /* PINMemoryCache.m in Sources */,
+ 320117CA24444E3D004FD783 /* PINDiskCache.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
CC0105AC1E271A1600890935 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -712,6 +806,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ 320117B524444E23004FD783 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "PINOperation-watchOS";
+ targetProxy = 320117B424444E23004FD783 /* PBXContainerItemProxy */;
+ };
6818C2A61E564C2000875DB7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = PINOperation;
@@ -745,6 +844,61 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 320117A624444DF7004FD783 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
+ PRODUCT_NAME = PINCache;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Debug;
+ };
+ 320117A724444DF7004FD783 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_STYLE = Automatic;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
+ PRODUCT_NAME = PINCache;
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ };
+ name = Release;
+ };
CC0105B71E271A1600890935 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -878,6 +1032,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
+ SUPPORTS_MACCATALYST = YES;
};
name = Debug;
};
@@ -900,6 +1055,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
+ SUPPORTS_MACCATALYST = YES;
};
name = Release;
};
@@ -924,7 +1080,7 @@
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
@@ -949,7 +1105,7 @@
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
- TVOS_DEPLOYMENT_TARGET = 9.2;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
@@ -971,6 +1127,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = PINCache;
SDKROOT = macosx;
@@ -996,6 +1153,7 @@
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_BUNDLE_IDENTIFIER = com.pinterest.PINCache;
PRODUCT_NAME = PINCache;
SDKROOT = macosx;
@@ -1086,6 +1244,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 320117AE24444DF7004FD783 /* Build configuration list for PBXNativeTarget "PINCache-watchOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 320117A624444DF7004FD783 /* Debug */,
+ 320117A724444DF7004FD783 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
CC0105AB1E271A1600890935 /* Build configuration list for PBXProject "PINCache" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme
new file mode 100644
index 00000000..9b9c8426
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/PINCache.xcodeproj/xcshareddata/xcschemes/PINCache-watchOS.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/README.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/README.md
index 15346ba3..aa81564a 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/README.md
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/README.md
@@ -2,7 +2,7 @@
[![CocoaPods](https://img.shields.io/cocoapods/v/PINCache.svg)](http://cocoadocs.org/docsets/PINCache/)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
-[![Build status](https://badge.buildkite.com/03e247305c96c3371f2ff2766e9c8c1efdd5fdb3a7eceaff43.svg?branch=master&style=flat)](https://buildkite.com/pinterest/pincache)
+[![Build status](https://github.com/pinterest/PINCache/workflows/CI/badge.svg)](https://github.com/pinterest/PINCache/actions?query=workflow%3ACI+branch%3Amaster)
## Fast, non-deadlocking parallel object cache for iOS and OS X.
@@ -82,7 +82,7 @@ Add the following line to your `Cartfile` and run `carthage update --platform io
## Requirements
-__PINCache__ requires iOS 8.0, tvOS 9.0, watchOS 2.0 or OS X 10.8 and greater.
+__PINCache__ requires iOS 8.0, tvOS 9.0, watchOS 2.0 or macOS 10.8 and greater.
## Contact
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/RELEASE.md b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/RELEASE.md
new file mode 100644
index 00000000..6e86b11c
--- /dev/null
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/RELEASE.md
@@ -0,0 +1,13 @@
+# Release Process
+This document describes the process for a public PINCache release.
+
+### Preparation
+- Install [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator): `sudo gem install github_changelog_generator`
+- Generate a GitHub Personal Access Token to prevent running into public GitHub API rate limits: https://github.com/github-changelog-generator/github-changelog-generator#github-token
+
+### Process
+- Run `github_changelog_generator` in PINCache project directory: `github_changelog_generator --token --user Pinterest --project PINCache`. To avoid hitting rate limit, the generator will replace the entire file with just the changes from this version – revert that giant deletion to get the entire new changelog.
+- Update `spec.version` within `PINCache.podspec` and the `since-tag` and `future-release` fields in `.github_changelog_generator`.
+- Create a new PR with the updated `PINCache.podspec` and the newly generated changelog, add `#changelog` to the PR message so the CI will not prevent merging it.
+- After merging in the PR, [create a new GitHub release](https://github.com/Pinterest/PINCache/releases/new). Use the generated changelog for the new release.
+- Push to Cocoapods with `pod trunk push`
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINCache.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINCache.m
index 0bfdf8b1..f574e0c0 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINCache.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINCache.m
@@ -118,7 +118,7 @@ - (void)objectForKeyAsync:(NSString *)key completion:(PINCacheObjectBlock)block
return;
[self.operationQueue scheduleOperation:^{
- [self->_memoryCache objectForKeyAsync:key completion:^(PINMemoryCache *memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ [self->_memoryCache objectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
if (memoryCacheObject) {
// Update file modification date. TODO: make this a separate method?
[self->_diskCache fileURLForKeyAsync:memoryCacheKey completion:^(NSString * _Nonnull key, NSURL * _Nullable fileURL) {}];
@@ -271,8 +271,8 @@ - (NSUInteger)diskByteCount
{
__block NSUInteger byteCount = 0;
- [_diskCache synchronouslyLockFileAccessWhileExecutingBlock:^(PINDiskCache *diskCache) {
- byteCount = diskCache.byteCount;
+ [_diskCache synchronouslyLockFileAccessWhileExecutingBlock:^(id diskCache) {
+ byteCount = ((PINDiskCache *)diskCache).byteCount;
}];
return byteCount;
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.h b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
index 34578b79..224f9ce1 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.h
@@ -26,7 +26,7 @@ typedef NS_ENUM(NSInteger, PINDiskCacheError) {
/**
A callback block which provides the cache, key and object as arguments
*/
-typedef void (^PINDiskCacheObjectBlock)(PINDiskCache *cache, NSString *key, id _Nullable object);
+typedef void (^PINDiskCacheObjectBlock)(PINDiskCache *cache, NSString *key, id _Nullable object);
/**
A callback block which provides the key and fileURL of the object
@@ -155,7 +155,7 @@ PIN_SUBCLASSING_RESTRICTED
/**
The maximum number of bytes allowed on disk. This value is checked every time an object is set, if the written
- size exceeds the limit a trim call is queued. Defaults to `0.0`, meaning no practical limit.
+ size exceeds the limit a trim call is queued. Defaults to 50MB.
*/
@property (assign) NSUInteger byteLimit;
@@ -163,7 +163,7 @@ PIN_SUBCLASSING_RESTRICTED
/**
The maximum number of seconds an object is allowed to exist in the cache. Setting this to a value
greater than `0.0` will start a recurring GCD timer with the same period that calls .
- Setting it back to `0.0` will stop the timer. Defaults to `0.0`, meaning no limit.
+ Setting it back to `0.0` will stop the timer. Defaults to 30 days.
*/
@property (assign) NSTimeInterval ageLimit;
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
index 448f72ef..40e606d8 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINDiskCache.m
@@ -111,7 +111,7 @@ @implementation PINDiskCache
- (void)dealloc
{
__unused int result = pthread_mutex_destroy(&_mutex);
- NSCAssert(result == 0, @"Failed to destroy lock in PINMemoryCache %p. Code: %d", (void *)self, result);
+ NSCAssert(result == 0, @"Failed to destroy lock in PINDiskCache %p. Code: %d", (void *)self, result);
pthread_cond_destroy(&_diskWritableCondition);
pthread_cond_destroy(&_diskStateKnownCondition);
}
@@ -185,19 +185,19 @@ - (instancetype)initWithName:(NSString *)name
operationQueue:(PINOperationQueue *)operationQueue
ttlCache:(BOOL)ttlCache
{
- if (!name)
+ if (!name) {
return nil;
-
+ }
NSAssert(((!serializer && !deserializer) || (serializer && deserializer)),
@"PINDiskCache must be initialized with a serializer AND deserializer.");
NSAssert(((!keyEncoder && !keyDecoder) || (keyEncoder && keyDecoder)),
- @"PINDiskCache must be initialized with a encoder AND decoder.");
+ @"PINDiskCache must be initialized with an encoder AND decoder.");
if (self = [super init]) {
__unused int result = pthread_mutex_init(&_mutex, NULL);
- NSAssert(result == 0, @"Failed to init lock in PINMemoryCache %@. Code: %d", self, result);
+ NSAssert(result == 0, @"Failed to init lock in PINDiskCache %@. Code: %d", self, result);
_name = [name copy];
_prefix = [prefix copy];
@@ -666,15 +666,18 @@ - (BOOL)_locked_setAgeLimit:(NSTimeInterval)ageLimit forURL:(NSURL *)fileURL
- (BOOL)removeFileAndExecuteBlocksForKey:(NSString *)key
{
NSURL *fileURL = [self encodedFileURLForKey:key];
-
+ if (!fileURL) {
+ return NO;
+ }
+
// We only need to lock until writable at the top because once writable, always writable
[self lockForWriting];
- if (!fileURL || ![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) {
+ if (![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) {
[self unlock];
return NO;
}
- PINCacheObjectBlock willRemoveObjectBlock = _willRemoveObjectBlock;
+ PINDiskCacheObjectBlock willRemoveObjectBlock = _willRemoveObjectBlock;
if (willRemoveObjectBlock) {
[self unlock];
willRemoveObjectBlock(self, key, nil);
@@ -695,7 +698,7 @@ - (BOOL)removeFileAndExecuteBlocksForKey:(NSString *)key
[_metadata removeObjectForKey:key];
- PINCacheObjectBlock didRemoveObjectBlock = _didRemoveObjectBlock;
+ PINDiskCacheObjectBlock didRemoveObjectBlock = _didRemoveObjectBlock;
if (didRemoveObjectBlock) {
[self unlock];
_didRemoveObjectBlock(self, key, nil);
@@ -1204,7 +1207,7 @@ - (void)setObject:(id )object forKey:(NSString *)key withAgeLimit:(NST
}
[self lockForWriting];
- PINCacheObjectBlock willAddObjectBlock = self->_willAddObjectBlock;
+ PINDiskCacheObjectBlock willAddObjectBlock = self->_willAddObjectBlock;
if (willAddObjectBlock) {
[self unlock];
willAddObjectBlock(self, key, object);
@@ -1248,7 +1251,7 @@ - (void)setObject:(id )object forKey:(NSString *)key withAgeLimit:(NST
fileURL = nil;
}
- PINCacheObjectBlock didAddObjectBlock = self->_didAddObjectBlock;
+ PINDiskCacheObjectBlock didAddObjectBlock = self->_didAddObjectBlock;
if (didAddObjectBlock) {
[self unlock];
didAddObjectBlock(self, key, object);
@@ -1660,29 +1663,49 @@ - (void)removeObjectForKey:(NSString *)key block:(nullable PINDiskCacheObjectBlo
- (void)trimToDate:(NSDate *)date block:(nullable PINDiskCacheBlock)block
{
- [self trimToDateAsync:date completion:block];
+ [self trimToDateAsync:date completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)trimToSize:(NSUInteger)byteCount block:(nullable PINDiskCacheBlock)block
{
- [self trimToSizeAsync:byteCount completion:block];
+ [self trimToSizeAsync:byteCount completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)trimToSizeByDate:(NSUInteger)byteCount block:(nullable PINDiskCacheBlock)block
{
- [self trimToSizeAsync:byteCount completion:block];
+ [self trimToSizeAsync:byteCount completion:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)removeAllObjects:(nullable PINDiskCacheBlock)block
{
- [self removeAllObjectsAsync:block];
+ [self removeAllObjectsAsync:^(id diskCache) {
+ if (block) {
+ block((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)enumerateObjectsWithBlock:(PINDiskCacheFileURLBlock)block completionBlock:(nullable PINDiskCacheBlock)completionBlock
{
[self enumerateObjectsWithBlockAsync:^(NSString * _Nonnull key, NSURL * _Nullable fileURL, BOOL * _Nonnull stop) {
block(key, fileURL);
- } completionBlock:completionBlock];
+ } completionBlock:^(id diskCache) {
+ if (completionBlock) {
+ completionBlock((PINDiskCache *)diskCache);
+ }
+ }];
}
- (void)setTtlCache:(BOOL)ttlCache
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
index 34c2d19b..9f64c293 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Source/PINMemoryCache.m
@@ -130,10 +130,11 @@ + (PINMemoryCache *)sharedCache
#pragma mark - Private Methods -
- (void)didReceiveMemoryWarningNotification:(NSNotification *)notification {
- if (self.removeAllObjectsOnMemoryWarning)
+ if (self.removeAllObjectsOnMemoryWarning) {
[self removeAllObjectsAsync:nil];
-
- [self removeExpiredObjects];
+ } else {
+ [self removeExpiredObjects];
+ }
[self.operationQueue scheduleOperation:^{
[self lock];
@@ -190,23 +191,19 @@ - (void)removeObjectAndExecuteBlocksForKey:(NSString *)key
- (void)trimMemoryToDate:(NSDate *)trimDate
{
[self lock];
- NSArray *keysSortedByCreatedDate = [_createdDates keysSortedByValueUsingSelector:@selector(compare:)];
NSDictionary *createdDates = [_createdDates copy];
NSDictionary *ageLimits = [_ageLimits copy];
[self unlock];
- for (NSString *key in keysSortedByCreatedDate) { // oldest objects first
- NSDate *createdDate = createdDates[key];
+ [createdDates enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSDate * _Nonnull createdDate, BOOL * _Nonnull stop) {
NSTimeInterval ageLimit = [ageLimits[key] doubleValue];
- if (!createdDate || ageLimit > 0.0)
- continue;
-
+ if (!createdDate || ageLimit > 0.0) {
+ return;
+ }
if ([createdDate compare:trimDate] == NSOrderedAscending) { // older than trim date
[self removeObjectAndExecuteBlocksForKey:key];
- } else {
- break;
}
- }
+ }];
}
- (void)removeExpiredObjects
@@ -836,42 +833,74 @@ - (void)containsObjectForKey:(NSString *)key block:(PINMemoryCacheContainmentBlo
- (void)objectForKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self objectForKeyAsync:key completion:block];
+ [self objectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)setObject:(id)object forKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self setObjectAsync:object forKey:key completion:block];
+ [self setObjectAsync:object forKey:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)setObject:(id)object forKey:(NSString *)key withCost:(NSUInteger)cost block:(nullable PINMemoryCacheObjectBlock)block
{
- [self setObjectAsync:object forKey:key withCost:cost completion:block];
+ [self setObjectAsync:object forKey:key withCost:cost completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)removeObjectForKey:(NSString *)key block:(nullable PINMemoryCacheObjectBlock)block
{
- [self removeObjectForKeyAsync:key completion:block];
+ [self removeObjectForKeyAsync:key completion:^(id memoryCache, NSString *memoryCacheKey, id memoryCacheObject) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache, memoryCacheKey, memoryCacheObject);
+ }
+ }];
}
- (void)trimToDate:(NSDate *)date block:(nullable PINMemoryCacheBlock)block
{
- [self trimToDateAsync:date completion:block];
+ [self trimToDateAsync:date completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)trimToCost:(NSUInteger)cost block:(nullable PINMemoryCacheBlock)block
{
- [self trimToCostAsync:cost completion:block];
+ [self trimToCostAsync:cost completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)trimToCostByDate:(NSUInteger)cost block:(nullable PINMemoryCacheBlock)block
{
- [self trimToCostByDateAsync:cost completion:block];
+ [self trimToCostByDateAsync:cost completion:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)removeAllObjects:(nullable PINMemoryCacheBlock)block
{
- [self removeAllObjectsAsync:block];
+ [self removeAllObjectsAsync:^(id memoryCache) {
+ if (block) {
+ block((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)enumerateObjectsWithBlock:(PINMemoryCacheObjectBlock)block completionBlock:(nullable PINMemoryCacheBlock)completionBlock
@@ -881,7 +910,11 @@ - (void)enumerateObjectsWithBlock:(PINMemoryCacheObjectBlock)block completionBlo
PINMemoryCache *memoryCache = (PINMemoryCache *)cache;
block(memoryCache, key, object);
}
- } completionBlock:completionBlock];
+ } completionBlock:^(id memoryCache) {
+ if (completionBlock) {
+ completionBlock((PINMemoryCache *)memoryCache);
+ }
+ }];
}
- (void)setTtlCache:(BOOL)ttlCache
diff --git a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
index 4d89f9ad..b16cb450 100644
--- a/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
+++ b/Carthage/Checkouts/PINRemoteImage/Carthage/Checkouts/PINCache/Tests/PINCacheTests.m
@@ -130,7 +130,7 @@ - (void)testObjectSet
__block PINImage *image = nil;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
- [self.cache setObjectAsync:[self image] forKey:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache setObjectAsync:[self image] forKey:key completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -148,7 +148,7 @@ - (void)testObjectSetWithCost
PINImage *srcImage = [self image];
NSUInteger cost = (NSUInteger)(srcImage.size.width * srcImage.size.height);
- [self.cache setObjectAsync:srcImage forKey:key withCost:cost completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache setObjectAsync:srcImage forKey:key withCost:cost completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -170,7 +170,7 @@ - (void)testObjectSetWithDuplicateKey
[self.cache setObject:value1 forKey:key];
[self.cache setObject:value2 forKey:key];
- [self.cache objectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
cachedValue = (NSString *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -233,7 +233,7 @@ - (void)testObjectGet
self.cache[key] = [self image];
- [self.cache objectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -252,7 +252,7 @@ - (void)testObjectGetWithInvalidKey
self.cache[key] = [self image];
- [self.cache objectForKeyAsync:invalidKey completion:^(PINCache *cache, NSString *key, id object) {
+ [self.cache objectForKeyAsync:invalidKey completion:^(id cache, NSString *key, id object) {
image = (PINImage *)object;
dispatch_semaphore_signal(semaphore);
}];
@@ -268,16 +268,28 @@ - (void)testObjectRemove
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
self.cache[key] = [self image];
-
- [self.cache removeObjectForKeyAsync:key completion:^(PINCache *cache, NSString *key, id object) {
+
+ __block BOOL willRemoveObjectBlockCalled = NO;
+ self.cache.diskCache.willRemoveObjectBlock = ^(PINDiskCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ willRemoveObjectBlockCalled = YES;
+ };
+
+ __block BOOL didRemoveObjectBlockCalled = NO;
+ self.cache.diskCache.didRemoveObjectBlock = ^(PINDiskCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ didRemoveObjectBlockCalled = YES;
+ };
+
+ [self.cache removeObjectForKeyAsync:key completion:^(id cache, NSString *key, id object) {
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, [self timeout]);
id object = self.cache[key];
-
+
XCTAssertNil(object, @"object was not removed");
+ XCTAssertTrue(willRemoveObjectBlockCalled, @"willRemoveObjectBlock was not called");
+ XCTAssertTrue(didRemoveObjectBlockCalled, @"didRemoveObjectBlock was not called");
}
- (void)testObjectRemoveAll
@@ -288,8 +300,18 @@ - (void)testObjectRemoveAll
self.cache[key1] = key1;
self.cache[key2] = key2;
-
- [self.cache removeAllObjectsAsync:^(PINCache *cache) {
+
+ __block BOOL willRemoveAllObjectsBlockCalled = NO;
+ self.cache.diskCache.willRemoveAllObjectsBlock = ^(id _Nonnull cache) {
+ willRemoveAllObjectsBlockCalled = YES;
+ };
+
+ __block BOOL didRemoveAllObjectsBlockCalled = NO;
+ self.cache.diskCache.didRemoveAllObjectsBlock = ^(id _Nonnull cache) {
+ didRemoveAllObjectsBlockCalled = YES;
+ };
+
+ [self.cache removeAllObjectsAsync:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
@@ -300,6 +322,8 @@ - (void)testObjectRemoveAll
XCTAssertNil(object1, @"not all objects were removed");
XCTAssertNil(object2, @"not all objects were removed");
+ XCTAssertTrue(willRemoveAllObjectsBlockCalled, @"willRemoveAllObjectsBlock was not called");
+ XCTAssertTrue(didRemoveAllObjectsBlockCalled, @"didRemoveAllObjectsBlock was not called");
XCTAssertTrue(self.cache.memoryCache.totalCost == 0, @"memory cache cost was not 0 after removing all objects");
XCTAssertTrue(self.cache.diskByteCount == 0, @"disk cache byte count was not 0 after removing all objects");
}
@@ -481,9 +505,9 @@ - (void)testOneThousandAndOneWrites
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
dispatch_group_enter(group);
- [self.cache setObjectAsync:obj forKey:key completion:^(PINCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ [self.cache setObjectAsync:obj forKey:key completion:^(id _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
dispatch_async(queue, ^{
- [self.cache objectForKeyAsync:key completion:^(PINCache * _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
+ [self.cache objectForKeyAsync:key completion:^(id _Nonnull cache, NSString * _Nonnull key, id _Nullable object) {
NSString *obj = [[NSString alloc] initWithFormat:@"obj %lu", (unsigned long)i];
XCTAssertTrue([object isEqualToString:obj] == YES, @"object returned was not object set");
@synchronized (self) {
@@ -511,7 +535,7 @@ - (void)testMemoryWarningBlock
__block BOOL blockDidExecute = NO;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
blockDidExecute = YES;
dispatch_semaphore_signal(semaphore);
};
@@ -530,7 +554,7 @@ - (void)testBackgroundBlock
__block BOOL blockDidExecute = NO;
- self.cache.memoryCache.didEnterBackgroundBlock = ^(PINMemoryCache *cache) {
+ self.cache.memoryCache.didEnterBackgroundBlock = ^(id cache) {
blockDidExecute = YES;
dispatch_semaphore_signal(semaphore);
};
@@ -567,8 +591,8 @@ - (void)testMemoryWarningProperty
__block id object = nil;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
- object = cache[@"object"];
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
+ object = [cache objectForKey:@"object"];
dispatch_semaphore_signal(semaphore);
};
@@ -596,12 +620,13 @@ - (void)testMemoryCacheEnumerationWithWarning
__block NSUInteger enumCount = 0;
- self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(PINMemoryCache *cache) {
- [cache enumerateObjectsWithBlockAsync:^(PINMemoryCache *cache, NSString *key, id object, BOOL *stop) {
+ self.cache.memoryCache.didReceiveMemoryWarningBlock = ^(id cache) {
+ PINMemoryCache *memoryCache = (PINMemoryCache *)cache;
+ [memoryCache enumerateObjectsWithBlockAsync:^(id cache, NSString *key, id object, BOOL *stop) {
@synchronized (self) {
enumCount++;
}
- } completionBlock:^(PINMemoryCache *cache) {
+ } completionBlock:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
};
@@ -641,7 +666,7 @@ - (void)testDiskCacheEnumeration
@synchronized (self) {
enumCount++;
}
- } completionBlock:^(PINDiskCache *cache) {
+ } completionBlock:^(id cache) {
dispatch_semaphore_signal(semaphore);
}];
@@ -698,25 +723,25 @@ - (void)testAgeLimit
__block id diskObj2 = nil;
dispatch_group_enter(group);
- [self.cache.memoryCache objectForKeyAsync:key1 completion:^(PINMemoryCache *cache, NSString *key, id object) {
+ [self.cache.memoryCache objectForKeyAsync:key1 completion:^(id