Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fae18352f5 | ||
|
|
fae16445c4 | ||
|
|
fae13868f1 | ||
|
|
711ebbef25 | ||
|
|
10af3f23a2 | ||
|
|
fae16ab44a | ||
|
|
fae10d9e77 | ||
|
|
5e2e12f68b | ||
|
|
b1ff753bdd | ||
|
|
102ffdc684 | ||
|
|
86a2f2f84c | ||
|
|
f24d24574a | ||
|
|
79607cb9f8 | ||
|
|
76492143c9 | ||
|
|
ee3890a10c | ||
|
|
ebeaf45d3a | ||
|
|
71f49f4b44 | ||
|
|
b6883556fa | ||
|
|
37bb2ecb3b | ||
|
|
376db25ff5 | ||
|
|
5daf000339 | ||
|
|
6fbaa1a5d8 | ||
|
|
1ed7fb8cb6 | ||
|
|
f6f8ea731c | ||
|
|
5f2ece38fc | ||
|
|
4cad2a9db3 | ||
|
|
e4fe3e9d43 | ||
|
|
8c0a82c2f0 | ||
|
|
124c1cc145 | ||
|
|
02b4beacb3 | ||
|
|
8495bcde33 | ||
|
|
32d8f24286 | ||
|
|
f843510abe | ||
|
|
1e4d9f1f07 | ||
|
|
54af9202ab | ||
|
|
d9d0aa8211 | ||
|
|
5ebfac1d01 | ||
|
|
6e400d191f | ||
|
|
5ad66714fc | ||
|
|
061f29c887 | ||
|
|
dde01f357d | ||
|
|
b445e0517f | ||
|
|
da82de17b4 | ||
|
|
258b2ce35c | ||
|
|
d7d0323911 | ||
|
|
c0d339661c | ||
|
|
bdffc54f6c | ||
|
|
222ccffb7b | ||
|
|
0f7f7524a7 | ||
|
|
20192b6cb2 | ||
|
|
ec78ffb864 | ||
|
|
9ce676c51c | ||
|
|
1ad62f4bf8 | ||
|
|
fee08c000b | ||
|
|
e087df3b93 | ||
|
|
a7d112a8ba | ||
|
|
b4175bae13 | ||
|
|
a63fd85bc5 | ||
|
|
ff1063c8e2 | ||
|
|
1305e4366a | ||
|
|
4cad88d0cd | ||
|
|
58f3ef9ecd | ||
|
|
8b907ac7ed | ||
|
|
e5ce05dc89 | ||
|
|
42f88bcf53 | ||
|
|
4ddfe5a0f3 | ||
|
|
0e60e12364 | ||
|
|
06e20d5594 | ||
|
|
5c7e1b61d7 | ||
|
|
57da81bc29 | ||
|
|
86c4b29ed5 | ||
|
|
88f3465f27 | ||
|
|
27d4ca0d3b | ||
|
|
2802953130 | ||
|
|
5087a973cf | ||
|
|
a6e85ec913 | ||
|
|
27b3b9768c | ||
|
|
c26eb28536 | ||
|
|
9330644f9e | ||
|
|
e672053594 | ||
|
|
ef3ddda8e6 | ||
|
|
b734282b0d | ||
|
|
a343b50916 | ||
|
|
40866ce9f8 | ||
|
|
ffeedffda9 | ||
|
|
46159dd5d4 |
@@ -9,4 +9,4 @@ github "SwiftyJSON/SwiftyJSON"
|
||||
github "sindresorhus/LaunchAtLogin"
|
||||
|
||||
# Used for advanced logging features.
|
||||
github "emaloney/CleanroomLogger" ~> 6.0.0
|
||||
github "CocoaLumberjack/CocoaLumberjack"
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
github "SwiftyJSON/SwiftyJSON" "4.1.0"
|
||||
github "CocoaLumberjack/CocoaLumberjack" "3.7.0"
|
||||
github "SwiftyJSON/SwiftyJSON" "5.0.0"
|
||||
github "acheronfail/MASShortcut" "2.3.6-custom"
|
||||
github "emaloney/CleanroomLogger" "6.0.2"
|
||||
github "sindresorhus/LaunchAtLogin" "v2.1.0"
|
||||
github "sindresorhus/LaunchAtLogin" "v4.0.0"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
*.mdj binary
|
||||
@@ -0,0 +1,42 @@
|
||||
# Contributing to CocoaLumberjack
|
||||
|
||||
We want to make contributing to this project as easy and transparent as possible. Here are a few guidelines for making all our lives easier.
|
||||
|
||||
## Asking questions
|
||||
|
||||
We don't use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on [Stack Overflow](https://stackoverflow.com/) instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
A great way to contribute to the project is to send a detailed issue when you encounter an problem.
|
||||
It is very important to check for the same problem or suggestion in the project's issue list first. If you find a match, just add a small comment there.
|
||||
Doing this helps prioritize the most common problems and requests.
|
||||
|
||||
When reporting issues, please include the following:
|
||||
|
||||
- The platform name and version (e.g. iOS 8.1)
|
||||
- The library version
|
||||
- The integration method (e.g. CocoaPods/Carthage/manually)
|
||||
- The version of Xcode you're using
|
||||
- The full output of any stack trace or compiler error
|
||||
- A small demo project that replicates the issue (especially if the way to reproduce the issue is not straight-forward)
|
||||
- Any other details that would be useful in understanding the problem
|
||||
|
||||
This information will help us review and fix your issue faster.
|
||||
|
||||
|
||||
Please do not be offended if we close your issue and reference this document.
|
||||
If you believe the issue is truely a fault in the project’s codebase, re-open it.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
We gladly accept any PR's assuming they are well written, documented ( if necessary ) and preferably have test code.
|
||||
If you're unsure if we'll accept a new feature please open an issue requesting it and we can have a discussion before you code and submit a PR.
|
||||
|
||||
Checklist:
|
||||
- Fork the repo and create your branch from the latest master (to minimize the conflicts)
|
||||
- If you've added code that should be tested, add tests.
|
||||
- If you've changed APIs, update the documentation.
|
||||
- Ensure the test suite passes.
|
||||
- Make sure your code lints (pod lib lint)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
### New Issue Checklist
|
||||
|
||||
* [ ] I have read and understood the [CONTRIBUTING guide](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/.github/CONTRIBUTING.md)
|
||||
* [ ] I have read the [Documentation](https://github.com/CocoaLumberjack/CocoaLumberjack#documentation) or [CocoaDocs](cocoadocs.org/docsets/CocoaLumberjack)
|
||||
* [ ] I have searched for a similar issue in the [project](https://github.com/CocoaLumberjack/CocoaLumberjack/issues) and found none
|
||||
|
||||
### Issue Info
|
||||
|
||||
Info | Value |
|
||||
-------------------------|-------------------------------------|
|
||||
Platform Name | e.g. ios / osx / tvos / watchos
|
||||
Platform Version | e.g. 8.0
|
||||
CocoaLumberjack Version | e.g. 2.3.0
|
||||
Integration Method | e.g. carthage / cocoapods / manually
|
||||
Xcode Version | e.g. Xcode 7.3
|
||||
Repro rate | e.g. all the time (100%) / sometimes x% / only once
|
||||
Demo project link | e.g. link to a demo project that highlights the issue
|
||||
|
||||
### Issue Description and Steps
|
||||
|
||||
Please fill in the detailed description of the issue (full textual output of any stack trace, compiler error, ...) and the steps to reproduce the issue.
|
||||
|
||||
Are you reporting a queue deadlock? If so, you must include a complete backtrace of all threads, which you can generate by typing `bt all` in the debugger after you hit the deadlock. Failure to do so will prevent us from helping you.
|
||||
@@ -0,0 +1,18 @@
|
||||
### New Pull Request Checklist
|
||||
|
||||
* [ ] I have read and understood the [CONTRIBUTING guide](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/.github/CONTRIBUTING.md)
|
||||
* [ ] I have read the [Documentation](http://cocoadocs.org/docsets/CocoaLumberjack/)
|
||||
* [ ] I have searched for a similar pull request in the [project](https://github.com/CocoaLumberjack/CocoaLumberjack/pulls) and found none
|
||||
|
||||
* [ ] I have updated this branch with the latest master to avoid conflicts (via merge from master or rebase)
|
||||
* [ ] I have added the required tests to prove the fix/feature I am adding
|
||||
* [ ] I have updated the documentation (if necessary)
|
||||
* [ ] I have run the tests and they pass
|
||||
* [ ] I have run the lint and it passes (`pod lib lint`)
|
||||
|
||||
This merge request fixes / refers to the following issues: ...
|
||||
|
||||
### Pull Request Description
|
||||
|
||||
...
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- Important
|
||||
- Blocker
|
||||
- Feature Request
|
||||
- Good First Issue
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: Stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs.
|
||||
If this is still an issue, please make sure it is up to date and if so,
|
||||
add a comment that this is still an issue to keep it open.
|
||||
Thank you for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
@@ -0,0 +1,50 @@
|
||||
name: Demo Builds
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
|
||||
jobs:
|
||||
build-demos:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
scheme:
|
||||
- BenchmarkIPhone
|
||||
- BenchmarkMac
|
||||
- CLI
|
||||
- CaptureASL
|
||||
- ContextFilter
|
||||
- CoreDataLogger
|
||||
- CustomFormatters
|
||||
- CustomLogLevels
|
||||
- DispatchQueueLogger
|
||||
- FineGrainedLogging
|
||||
- GlobalLogLevel
|
||||
- LogFileCompressor
|
||||
- NonArcTest
|
||||
- OverflowTestMac
|
||||
- PerUserLogLevels
|
||||
- RegisteredLoggingTest (Desktop)
|
||||
- RegisteredLoggingTest (Mobile)
|
||||
- RollingTestMac
|
||||
- SQLiteLogger
|
||||
- TestXcodeColors (Desktop)
|
||||
- TextXcodeColors (Mobile)
|
||||
- UniversalApp
|
||||
- WebServerIPhone
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
workspace: Demos/Demos.xcworkspace
|
||||
scheme: ${{matrix.scheme}}
|
||||
configuration: Release
|
||||
action: build
|
||||
@@ -0,0 +1,49 @@
|
||||
name: Integration Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
|
||||
jobs:
|
||||
static-lib:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
project: Integration/Integration.xcodeproj
|
||||
scheme: iOSStaticLibraryIntegration
|
||||
configuration: Release
|
||||
action: build
|
||||
|
||||
dynamic-lib:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
scheme:
|
||||
- macOSSwiftIntegration
|
||||
- iOSFrameworkIntegration
|
||||
- tvOSSwiftIntegration
|
||||
destination: ['']
|
||||
include:
|
||||
- scheme: watchOSSwiftIntegration
|
||||
destination: 'platform=iOS Simulator,name=iPhone 11 Pro'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
project: Integration/Integration.xcodeproj
|
||||
scheme: ${{matrix.scheme}}
|
||||
configuration: Release
|
||||
destination: ${{matrix.destination}}
|
||||
action: build
|
||||
# watchOS builds seems to fail as of Xcode 11.4...
|
||||
continue-on-error: ${{matrix.scheme == 'watchOSSwiftIntegration'}}
|
||||
@@ -0,0 +1,45 @@
|
||||
name: Library Builds
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
|
||||
jobs:
|
||||
static-lib:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
sdk: [iphonesimulator, macosx]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
workspace: Xcode/Lumberjack.xcworkspace
|
||||
scheme: CocoaLumberjack-Static
|
||||
configuration: Release
|
||||
sdk: ${{matrix.sdk}}
|
||||
action: build
|
||||
|
||||
dynamic-lib:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
scheme: [CocoaLumberjack, CocoaLumberjackSwift]
|
||||
sdk: [iphonesimulator, macosx, watchsimulator, appletvsimulator]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
workspace: Xcode/Lumberjack.xcworkspace
|
||||
scheme: ${{matrix.scheme}}
|
||||
configuration: Release
|
||||
sdk: ${{matrix.sdk}}
|
||||
action: build
|
||||
@@ -0,0 +1,57 @@
|
||||
name: Unit Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
|
||||
jobs:
|
||||
swiftpm:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- name: Run SwiftPM Tests
|
||||
run: swift test --enable-code-coverage --parallel
|
||||
- name: Generate Coverage Files
|
||||
run: xcrun llvm-cov export -format="lcov" .build/debug/*PackageTests.xctest/Contents/MacOS/*PackageTests -instr-profile .build/debug/codecov/default.profdata > coverage.lcov
|
||||
- uses: codecov/codecov-action@v1
|
||||
with:
|
||||
file: coverage.lcov
|
||||
token: ${{secrets.CODECOV_TOKEN}}
|
||||
|
||||
xcode:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
matrix:
|
||||
scheme: [Swift Tests]
|
||||
destination:
|
||||
- platform=macOS
|
||||
- platform=iOS Simulator,OS=latest,name=iPhone 11 Pro
|
||||
skip-testing: ['']
|
||||
include:
|
||||
- scheme: iOS Tests
|
||||
destination: 'platform=iOS Simulator,name=iPhone 11 Pro,OS=latest'
|
||||
skip-testing: 'iOS Tests/DDFileLoggerPerformanceTests'
|
||||
- scheme: OS X Tests
|
||||
destination: 'platform=macosx'
|
||||
skip-testing: 'OS X Tests/DDFileLoggerPerformanceTests'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- uses: sersoft-gmbh/xcodebuild-action@v1
|
||||
with:
|
||||
project: Tests/Tests.xcodeproj
|
||||
scheme: ${{matrix.scheme}}
|
||||
destination: ${{matrix.destination}}
|
||||
skip-testing: ${{matrix.skip-testing}}
|
||||
build-settings: GCC_GENERATE_TEST_COVERAGE_FILES=YES
|
||||
action: test
|
||||
- uses: codecov/codecov-action@v1
|
||||
with:
|
||||
token: ${{secrets.CODECOV_TOKEN}}
|
||||
@@ -0,0 +1,68 @@
|
||||
name: Validations
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
issue_comment:
|
||||
types: [ created ]
|
||||
|
||||
env:
|
||||
LC_CTYPE: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
|
||||
jobs:
|
||||
validate-cocoapods:
|
||||
runs-on: macos-latest
|
||||
if: github.event_name != 'issue_comment'
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: ./Scripts/ci-select-xcode.sh
|
||||
- run: pod lib lint
|
||||
|
||||
run-danger-for-internal-pr:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: danger/swift
|
||||
uses: docker://frmeloni/danger-swift-with-swiftlint:1.3.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
run-danger-for-external-pr:
|
||||
runs-on: ubuntu-latest
|
||||
if: |
|
||||
github.event_name == 'issue_comment' && github.event.action == 'created'
|
||||
&& github.event.issue.pull_request != null
|
||||
&& startsWith(github.event.comment.body, '/run_checks')
|
||||
steps:
|
||||
- uses: sushichop/action-repository-permission@v1
|
||||
with:
|
||||
required-permission: write
|
||||
reaction-permitted: '+1'
|
||||
comment-not-permitted: "Sorry, you don't have enough permission to execute /run_checks..."
|
||||
- uses: actions/github-script@v2
|
||||
id: pr-details
|
||||
with:
|
||||
script: |
|
||||
const { data: pullRequest } = await github.pulls.get({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: context.issue.number
|
||||
});
|
||||
return pullRequest;
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
repository: ${{fromJSON(steps.pr-details.outputs.result).head.repo.full_name}}
|
||||
ref: ${{fromJSON(steps.pr-details.outputs.result).head.ref}}
|
||||
fetch-depth: 0
|
||||
- name: danger/swift
|
||||
uses: docker://frmeloni/danger-swift-with-swiftlint:1.3.1
|
||||
with:
|
||||
args: "--pr ${{github.event.issue.pull_request.url}}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
@@ -0,0 +1,16 @@
|
||||
# Xcode
|
||||
#
|
||||
.DS_Store
|
||||
/.build
|
||||
/.swiftpm
|
||||
/Packages
|
||||
/*.xcodeproj
|
||||
xcuserdata/
|
||||
|
||||
!Lumberjack.xcodeproj
|
||||
|
||||
# Carthage
|
||||
Carthage/Build
|
||||
|
||||
# Lumberjack generated files
|
||||
LumberjackUser*.h
|
||||
@@ -0,0 +1,10 @@
|
||||
disabled_rules:
|
||||
- line_length
|
||||
- function_parameter_count
|
||||
|
||||
opt_in_rules:
|
||||
- empty_count
|
||||
- force_unwrapping
|
||||
|
||||
nesting:
|
||||
type_level: 4
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// BaseNSLogging.h
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface BaseNSLogging : NSObject
|
||||
|
||||
+ (void)speedTest0;
|
||||
+ (void)speedTest1;
|
||||
+ (void)speedTest2;
|
||||
+ (void)speedTest3;
|
||||
+ (void)speedTest4;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// BaseNSLogging.m
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "BaseNSLogging.h"
|
||||
#import "PerformanceTesting.h"
|
||||
|
||||
#define DDLogVerbose NSLog
|
||||
#define DDLogInfo NSLog
|
||||
#define DDLogWarn NSLog
|
||||
#define DDLogError NSLog
|
||||
|
||||
#define FILENAME @"BaseNSLogging " // Trailing space to match exactly the others in length
|
||||
|
||||
@implementation BaseNSLogging
|
||||
|
||||
+ (void)speedTest0
|
||||
{
|
||||
// Log statements that will not be executed due to log level
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_0_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest0 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest1
|
||||
{
|
||||
// Log statements that will be executed asynchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_1_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest1 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest2
|
||||
{
|
||||
// Log statements that will be executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_2_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest2 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest3
|
||||
{
|
||||
// Even Spread:
|
||||
//
|
||||
// 25% - Not executed due to log level
|
||||
// 50% - Executed asynchronously
|
||||
// 25% - Executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest3A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest3B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest3C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest3D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest4
|
||||
{
|
||||
// Custom Spread
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_ERROR_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest4A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_WARN_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest4B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_INFO_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest4C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_VERBOSE_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest4D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
+377
@@ -0,0 +1,377 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
6ECBFD9521E99CD900CBB679 /* BaseNSLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECBFD8D21E99CD800CBB679 /* BaseNSLogging.m */; };
|
||||
6ECBFD9621E99CD900CBB679 /* StaticLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECBFD8F21E99CD800CBB679 /* StaticLogging.m */; };
|
||||
6ECBFD9721E99CD900CBB679 /* DynamicLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECBFD9021E99CD900CBB679 /* DynamicLogging.m */; };
|
||||
6ECBFD9821E99CD900CBB679 /* PerformanceTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECBFD9221E99CD900CBB679 /* PerformanceTesting.m */; };
|
||||
6ECBFD9A21E99CE400CBB679 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECBFD9921E99CE400CBB679 /* main.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
6ECBFDA121E99D2A00CBB679 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 18F3BFD71A81E06E00692297;
|
||||
remoteInfo = "CocoaLumberjack-Static";
|
||||
};
|
||||
6ECBFDA321E99D2A00CBB679 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 19FF46021B8B4CF400B43179;
|
||||
remoteInfo = CocoaLumberjack;
|
||||
};
|
||||
6ECBFDA521E99D2A00CBB679 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 19FF460F1B8B4D1400B43179;
|
||||
remoteInfo = CocoaLumberjackSwift;
|
||||
};
|
||||
6ECBFDA721E99D3700CBB679 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 19FF46011B8B4CF400B43179;
|
||||
remoteInfo = CocoaLumberjack;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
6ECBFD8121E99CA500CBB679 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
6ECBFD8321E99CA500CBB679 /* Benchmarking */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Benchmarking; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6ECBFD8D21E99CD800CBB679 /* BaseNSLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseNSLogging.m; sourceTree = "<group>"; };
|
||||
6ECBFD8E21E99CD800CBB679 /* StaticLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticLogging.h; sourceTree = "<group>"; };
|
||||
6ECBFD8F21E99CD800CBB679 /* StaticLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StaticLogging.m; sourceTree = "<group>"; };
|
||||
6ECBFD9021E99CD900CBB679 /* DynamicLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DynamicLogging.m; sourceTree = "<group>"; };
|
||||
6ECBFD9121E99CD900CBB679 /* DynamicLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLogging.h; sourceTree = "<group>"; };
|
||||
6ECBFD9221E99CD900CBB679 /* PerformanceTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PerformanceTesting.m; sourceTree = "<group>"; };
|
||||
6ECBFD9321E99CD900CBB679 /* PerformanceTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceTesting.h; sourceTree = "<group>"; };
|
||||
6ECBFD9421E99CD900CBB679 /* BaseNSLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseNSLogging.h; sourceTree = "<group>"; };
|
||||
6ECBFD9921E99CE400CBB679 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Lumberjack.xcodeproj; path = ../Lumberjack.xcodeproj; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
6ECBFD8021E99CA500CBB679 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
6ECBFD7A21E99CA500CBB679 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */,
|
||||
6ECBFD9921E99CE400CBB679 /* main.m */,
|
||||
6ECBFD9421E99CD900CBB679 /* BaseNSLogging.h */,
|
||||
6ECBFD8D21E99CD800CBB679 /* BaseNSLogging.m */,
|
||||
6ECBFD9121E99CD900CBB679 /* DynamicLogging.h */,
|
||||
6ECBFD9021E99CD900CBB679 /* DynamicLogging.m */,
|
||||
6ECBFD9321E99CD900CBB679 /* PerformanceTesting.h */,
|
||||
6ECBFD9221E99CD900CBB679 /* PerformanceTesting.m */,
|
||||
6ECBFD8E21E99CD800CBB679 /* StaticLogging.h */,
|
||||
6ECBFD8F21E99CD800CBB679 /* StaticLogging.m */,
|
||||
6ECBFD8421E99CA500CBB679 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6ECBFD8421E99CA500CBB679 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6ECBFD8321E99CA500CBB679 /* Benchmarking */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6ECBFD9C21E99D2A00CBB679 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6ECBFDA221E99D2A00CBB679 /* libCocoaLumberjack.a */,
|
||||
6ECBFDA421E99D2A00CBB679 /* CocoaLumberjack.framework */,
|
||||
6ECBFDA621E99D2A00CBB679 /* CocoaLumberjackSwift.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
6ECBFD8221E99CA500CBB679 /* Benchmarking */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6ECBFD8A21E99CA500CBB679 /* Build configuration list for PBXNativeTarget "Benchmarking" */;
|
||||
buildPhases = (
|
||||
6ECBFD7F21E99CA500CBB679 /* Sources */,
|
||||
6ECBFD8021E99CA500CBB679 /* Frameworks */,
|
||||
6ECBFD8121E99CA500CBB679 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
6ECBFDA821E99D3700CBB679 /* PBXTargetDependency */,
|
||||
);
|
||||
name = Benchmarking;
|
||||
productName = Benchmarking;
|
||||
productReference = 6ECBFD8321E99CA500CBB679 /* Benchmarking */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
6ECBFD7B21E99CA500CBB679 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1010;
|
||||
ORGANIZATIONNAME = CocoaLumberjack;
|
||||
TargetAttributes = {
|
||||
6ECBFD8221E99CA500CBB679 = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 6ECBFD7E21E99CA500CBB679 /* Build configuration list for PBXProject "Benchmarking" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 6ECBFD7A21E99CA500CBB679;
|
||||
productRefGroup = 6ECBFD8421E99CA500CBB679 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 6ECBFD9C21E99D2A00CBB679 /* Products */;
|
||||
ProjectRef = 6ECBFD9B21E99D2A00CBB679 /* Lumberjack.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
6ECBFD8221E99CA500CBB679 /* Benchmarking */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
6ECBFDA221E99D2A00CBB679 /* libCocoaLumberjack.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libCocoaLumberjack.a;
|
||||
remoteRef = 6ECBFDA121E99D2A00CBB679 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
6ECBFDA421E99D2A00CBB679 /* CocoaLumberjack.framework */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
path = CocoaLumberjack.framework;
|
||||
remoteRef = 6ECBFDA321E99D2A00CBB679 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
6ECBFDA621E99D2A00CBB679 /* CocoaLumberjackSwift.framework */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
path = CocoaLumberjackSwift.framework;
|
||||
remoteRef = 6ECBFDA521E99D2A00CBB679 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
6ECBFD7F21E99CA500CBB679 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6ECBFD9A21E99CE400CBB679 /* main.m in Sources */,
|
||||
6ECBFD9521E99CD900CBB679 /* BaseNSLogging.m in Sources */,
|
||||
6ECBFD9621E99CD900CBB679 /* StaticLogging.m in Sources */,
|
||||
6ECBFD9721E99CD900CBB679 /* DynamicLogging.m in Sources */,
|
||||
6ECBFD9821E99CD900CBB679 /* PerformanceTesting.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
6ECBFDA821E99D3700CBB679 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = CocoaLumberjack;
|
||||
targetProxy = 6ECBFDA721E99D3700CBB679 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
6ECBFD8821E99CA500CBB679 /* 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;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
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;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6ECBFD8921E99CA500CBB679 /* 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;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
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;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
6ECBFD8B21E99CA500CBB679 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6ECBFD8C21E99CA500CBB679 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
6ECBFD7E21E99CA500CBB679 /* Build configuration list for PBXProject "Benchmarking" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6ECBFD8821E99CA500CBB679 /* Debug */,
|
||||
6ECBFD8921E99CA500CBB679 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
6ECBFD8A21E99CA500CBB679 /* Build configuration list for PBXNativeTarget "Benchmarking" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6ECBFD8B21E99CA500CBB679 /* Debug */,
|
||||
6ECBFD8C21E99CA500CBB679 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 6ECBFD7B21E99CA500CBB679 /* Project object */;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Benchmarking
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1010"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6ECBFD8221E99CA500CBB679"
|
||||
BuildableName = "Benchmarking"
|
||||
BlueprintName = "Benchmarking"
|
||||
ReferencedContainer = "container:Benchmarking.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6ECBFD8221E99CA500CBB679"
|
||||
BuildableName = "Benchmarking"
|
||||
BlueprintName = "Benchmarking"
|
||||
ReferencedContainer = "container:Benchmarking.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
enableThreadSanitizer = "YES"
|
||||
enableUBSanitizer = "YES"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6ECBFD8221E99CA500CBB679"
|
||||
BuildableName = "Benchmarking"
|
||||
BlueprintName = "Benchmarking"
|
||||
ReferencedContainer = "container:Benchmarking.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "6ECBFD8221E99CA500CBB679"
|
||||
BuildableName = "Benchmarking"
|
||||
BlueprintName = "Benchmarking"
|
||||
ReferencedContainer = "container:Benchmarking.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// DynamicLogging.h
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface DynamicLogging : NSObject
|
||||
|
||||
+ (void)speedTest0;
|
||||
+ (void)speedTest1;
|
||||
+ (void)speedTest2;
|
||||
+ (void)speedTest3;
|
||||
+ (void)speedTest4;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,107 @@
|
||||
//
|
||||
// DynamicLogging.m
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "DynamicLogging.h"
|
||||
#import "PerformanceTesting.h"
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
#define FILENAME @"DynamicLogging"
|
||||
|
||||
// Debug levels: off, error, warn, info, verbose
|
||||
static DDLogLevel ddLogLevel = DDLogLevelWarning; // NOT CONST
|
||||
|
||||
@implementation DynamicLogging
|
||||
|
||||
+ (DDLogLevel)ddLogLevel
|
||||
{
|
||||
return ddLogLevel;
|
||||
}
|
||||
|
||||
+ (void)ddSetLogLevel:(DDLogLevel)logLevel
|
||||
{
|
||||
ddLogLevel = logLevel;
|
||||
}
|
||||
|
||||
+ (void)speedTest0
|
||||
{
|
||||
// Log statements that will not be executed due to log level
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_0_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest0 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest1
|
||||
{
|
||||
// Log statements that will be executed asynchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_1_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest1 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest2
|
||||
{
|
||||
// Log statements that will be executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_2_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest2 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest3
|
||||
{
|
||||
// Even Spread:
|
||||
//
|
||||
// 25% - Not executed due to log level
|
||||
// 50% - Executed asynchronously
|
||||
// 25% - Executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest3A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest3B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest3C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest3D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest4
|
||||
{
|
||||
// Custom Spread
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_ERROR_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest4A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_WARN_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest4B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_INFO_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest4C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_VERBOSE_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest4D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// PerformanceTesting.h
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define SPEED_TEST_0_COUNT 1000 // Total log statements
|
||||
#define SPEED_TEST_1_COUNT 1000 // Total log statements
|
||||
#define SPEED_TEST_2_COUNT 1000 // Total log statements
|
||||
#define SPEED_TEST_3_COUNT 250 // Per log level (multiply by 4 to get total)
|
||||
|
||||
#define SPEED_TEST_4_VERBOSE_COUNT 900
|
||||
#define SPEED_TEST_4_INFO_COUNT 000
|
||||
#define SPEED_TEST_4_WARN_COUNT 000
|
||||
#define SPEED_TEST_4_ERROR_COUNT 100
|
||||
|
||||
// Further documentation on these tests may be found in the implementation file.
|
||||
|
||||
@interface PerformanceTesting : NSObject
|
||||
|
||||
+ (void)startPerformanceTests;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,419 @@
|
||||
//
|
||||
// PerformanceTesting.m
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "PerformanceTesting.h"
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
#import "BaseNSLogging.h"
|
||||
#import "StaticLogging.h"
|
||||
#import "DynamicLogging.h"
|
||||
|
||||
// Define the number of times each test is performed.
|
||||
// Due to various factors, the execution time of each test run may vary quite a bit.
|
||||
// Each test should be executed several times in order to arrive at a stable average.
|
||||
#define NUMBER_OF_RUNS 20
|
||||
|
||||
/**
|
||||
* The idea behind the benchmark tests is simple:
|
||||
* How does the logging framework compare to basic NSLog statements?
|
||||
*
|
||||
* However, due to the complexity of the logging framework and its various configuration options,
|
||||
* it is more complicated than a single test. Thus the testing is broken up as follows:
|
||||
*
|
||||
* - 3 Suites, each representing a different configuration of the logging framework
|
||||
* - 5 Tests, run within each suite.
|
||||
*
|
||||
* The suites are described below in the configureLoggingForSuiteX methods.
|
||||
* The tests are described in the various logging files, such as StaticLogging or DynamicLogging.
|
||||
* Notice that these file are almost exactly the same.
|
||||
*
|
||||
* BaseNSLogging defines the log methods to use NSLog (the base we are comparing against).
|
||||
* StaticLogging uses a 'const' log level, meaning the compiler will prune log statements (in release mode).
|
||||
* DynamicLogging use a non-const log level, meaning each log statement will incur an integer comparison penalty.
|
||||
**/
|
||||
|
||||
@implementation PerformanceTesting
|
||||
|
||||
static NSTimeInterval base[5][3]; // [test][min,avg,max]
|
||||
|
||||
static NSTimeInterval fmwk[3][2][5][3]; // [suite][file][test][min,avg,max]
|
||||
|
||||
static DDFileLogger *fileLogger = nil;
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
bzero(&base, sizeof(base));
|
||||
bzero(&fmwk, sizeof(fmwk));
|
||||
}
|
||||
|
||||
+ (DDFileLogger *)fileLogger
|
||||
{
|
||||
if (fileLogger == nil)
|
||||
{
|
||||
fileLogger = [[DDFileLogger alloc] init];
|
||||
|
||||
fileLogger.maximumFileSize = (1024 * 1024 * 1); // 1 MB
|
||||
fileLogger.rollingFrequency = (60 * 60 * 24); // 24 Hours
|
||||
|
||||
fileLogger.logFileManager.maximumNumberOfLogFiles = 4;
|
||||
}
|
||||
|
||||
return fileLogger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Suite 1 - Logging to Console only.
|
||||
**/
|
||||
+ (void)configureLoggingForSuite1
|
||||
{
|
||||
[DDLog removeAllLoggers];
|
||||
|
||||
[DDLog addLogger:[DDASLLogger sharedInstance]];
|
||||
[DDLog addLogger:[DDTTYLogger sharedInstance]];
|
||||
}
|
||||
|
||||
/**
|
||||
* Suite 2 - Logging to File only.
|
||||
*
|
||||
* We attempt to configure the logging so it will be forced to roll the log files during the test.
|
||||
* Rolling the log files requires creating and opening a new file.
|
||||
* This could be a performance hit, so we want our benchmark to take this into account.
|
||||
**/
|
||||
+ (void)configureLoggingForSuite2
|
||||
{
|
||||
[DDLog removeAllLoggers];
|
||||
|
||||
[DDLog addLogger:[self fileLogger]];
|
||||
}
|
||||
|
||||
/**
|
||||
* Suite 3 - Logging to Console & File.
|
||||
**/
|
||||
+ (void)configureLoggingForSuite3
|
||||
{
|
||||
[DDLog removeAllLoggers];
|
||||
|
||||
[DDLog addLogger:[DDASLLogger sharedInstance]];
|
||||
[DDLog addLogger:[DDTTYLogger sharedInstance]];
|
||||
[DDLog addLogger:[self fileLogger]];
|
||||
}
|
||||
|
||||
+ (void)executeTestsWithBase:(BOOL)exeBase framework:(BOOL)exeFramework frameworkSuite:(int)suiteNum
|
||||
{
|
||||
if (!exeBase && !exeFramework) return;
|
||||
|
||||
int sn = suiteNum - 1; // Zero-indexed for array
|
||||
|
||||
int i, j, k;
|
||||
|
||||
int start = exeBase ? 0 : 1;
|
||||
int finish = exeFramework ? 3 : 1;
|
||||
|
||||
for (i = start; i < finish; i++)
|
||||
{
|
||||
Class class;
|
||||
switch (i)
|
||||
{
|
||||
case 0 : class = [BaseNSLogging class]; break;
|
||||
case 1 : class = [StaticLogging class]; break;
|
||||
default : class = [DynamicLogging class]; break;
|
||||
}
|
||||
|
||||
for (j = 0; j < 5; j++)
|
||||
{
|
||||
NSTimeInterval min = DBL_MAX;
|
||||
NSTimeInterval max = DBL_MIN;
|
||||
|
||||
NSTimeInterval total = 0.0;
|
||||
|
||||
for (k = 0; k < NUMBER_OF_RUNS; k++)
|
||||
{
|
||||
@autoreleasepool {
|
||||
|
||||
NSDate *start = [NSDate date];
|
||||
|
||||
switch (j)
|
||||
{
|
||||
case 0 : [class performSelector:@selector(speedTest0)]; break;
|
||||
case 1 : [class performSelector:@selector(speedTest1)]; break;
|
||||
case 2 : [class performSelector:@selector(speedTest2)]; break;
|
||||
case 3 : [class performSelector:@selector(speedTest3)]; break;
|
||||
default : [class performSelector:@selector(speedTest4)]; break;
|
||||
}
|
||||
|
||||
NSTimeInterval result = [start timeIntervalSinceNow] * -1.0;
|
||||
|
||||
min = MIN(min, result);
|
||||
max = MAX(max, result);
|
||||
|
||||
total += result;
|
||||
|
||||
}
|
||||
[DDLog flushLog];
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
// Base
|
||||
base[j][0] = min;
|
||||
base[j][1] = total / (double)NUMBER_OF_RUNS;
|
||||
base[j][2] = max;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Framework
|
||||
fmwk[sn][i-1][j][0] = min;
|
||||
fmwk[sn][i-1][j][1] = total / (double)NUMBER_OF_RUNS;
|
||||
fmwk[sn][i-1][j][2] = max;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSString *)printableResultsForSuite:(int)suiteNum
|
||||
{
|
||||
int sn = suiteNum - 1; // Zero-indexed for array
|
||||
|
||||
NSMutableString *str = [NSMutableString stringWithCapacity:2000];
|
||||
|
||||
[str appendFormat:@"Results are given as [min][avg][max] calculated over the course of %i runs.", NUMBER_OF_RUNS];
|
||||
[str appendString:@"\n\n"];
|
||||
|
||||
[str appendString:@"Test 0:\n"];
|
||||
[str appendFormat:@"Execute %i log statements.\n", SPEED_TEST_0_COUNT];
|
||||
[str appendString:@"The log statement is above the log level threshold, and will not execute.\n"];
|
||||
[str appendString:@"The StaticLogging class will compile it out (in release mode).\n"];
|
||||
[str appendString:@"The DynamicLogging class will require a single integer comparison.\n"];
|
||||
[str appendString:@"\n"];
|
||||
[str appendFormat:@"BaseNSLogging :[%.4f][%.4f][%.4f]\n", base[0][0], base[0][1], base[0][2]];
|
||||
[str appendFormat:@"StaticLogging :[%.4f][%.4f][%.4f]\n", fmwk[sn][0][0][0], fmwk[sn][0][0][1], fmwk[sn][0][0][2]];
|
||||
[str appendFormat:@"DynamicLogging:[%.4f][%.4f][%.4f]\n", fmwk[sn][1][0][0], fmwk[sn][1][0][1], fmwk[sn][1][0][2]];
|
||||
[str appendString:@"\n\n\n"];
|
||||
|
||||
[str appendString:@"Test 1:\n"];
|
||||
[str appendFormat:@"Execute %i log statements.\n", SPEED_TEST_1_COUNT];
|
||||
[str appendString:@"The log statement is at or below the log level threshold, and will execute.\n"];
|
||||
[str appendString:@"The logging framework will execute the statements Asynchronously.\n"];
|
||||
[str appendString:@"\n"];
|
||||
[str appendFormat:@"BaseNSLogging :[%.4f][%.4f][%.4f]\n", base[1][0], base[1][1], base[1][2]];
|
||||
[str appendFormat:@"StaticLogging :[%.4f][%.4f][%.4f]\n", fmwk[sn][0][1][0], fmwk[sn][0][1][1], fmwk[sn][0][1][2]];
|
||||
[str appendFormat:@"DynamicLogging:[%.4f][%.4f][%.4f]\n", fmwk[sn][1][1][0], fmwk[sn][1][1][1], fmwk[sn][1][1][2]];
|
||||
[str appendString:@"\n\n\n"];
|
||||
|
||||
[str appendString:@"Test 2:\n"];
|
||||
[str appendFormat:@"Execute %i log statements.\n", SPEED_TEST_2_COUNT];
|
||||
[str appendString:@"The log statement is at or below the log level threshold, and will execute.\n"];
|
||||
[str appendString:@"The logging framework will execute the statements Synchronously.\n"];
|
||||
[str appendString:@"\n"];
|
||||
[str appendFormat:@"BaseNSLogging :[%.4f][%.4f][%.4f]\n", base[2][0], base[2][1], base[2][2]];
|
||||
[str appendFormat:@"StaticLogging :[%.4f][%.4f][%.4f]\n", fmwk[sn][0][2][0], fmwk[sn][0][2][1], fmwk[sn][0][2][2]];
|
||||
[str appendFormat:@"DynamicLogging:[%.4f][%.4f][%.4f]\n", fmwk[sn][1][2][0], fmwk[sn][1][2][1], fmwk[sn][1][2][2]];
|
||||
[str appendString:@"\n\n\n"];
|
||||
|
||||
[str appendString:@"Test 3:"];
|
||||
[str appendFormat:@"Execute %i log statements per level.\n", SPEED_TEST_3_COUNT];
|
||||
[str appendString:@"This is designed to mimic what might happen in a regular application.\n"];
|
||||
[str appendString:@"25% will be above log level threshold and will be filtered out.\n"];
|
||||
[str appendString:@"50% will execute Asynchronously.\n"];
|
||||
[str appendString:@"25% will execute Synchronously.\n"];
|
||||
[str appendString:@"\n"];
|
||||
[str appendFormat:@"BaseNSLogging :[%.4f][%.4f][%.4f]\n", base[3][0], base[3][1], base[3][2]];
|
||||
[str appendFormat:@"StaticLogging :[%.4f][%.4f][%.4f]\n", fmwk[sn][0][3][0], fmwk[sn][0][3][1], fmwk[sn][0][3][2]];
|
||||
[str appendFormat:@"DynamicLogging:[%.4f][%.4f][%.4f]\n", fmwk[sn][1][3][0], fmwk[sn][1][3][1], fmwk[sn][1][3][2]];
|
||||
[str appendString:@"\n\n\n"];
|
||||
|
||||
float total = 0.0F;
|
||||
total += SPEED_TEST_4_VERBOSE_COUNT;
|
||||
total += SPEED_TEST_4_INFO_COUNT;
|
||||
total += SPEED_TEST_4_WARN_COUNT;
|
||||
total += SPEED_TEST_4_ERROR_COUNT;
|
||||
|
||||
float verbose = (float)SPEED_TEST_4_VERBOSE_COUNT / total * 100.0F;
|
||||
float info = (float)SPEED_TEST_4_INFO_COUNT / total * 100.0F;
|
||||
float warn = (float)SPEED_TEST_4_WARN_COUNT / total * 100.0F;
|
||||
float error = (float)SPEED_TEST_4_ERROR_COUNT / total * 100.0F;
|
||||
|
||||
[str appendString:@"Test 4:\n"];
|
||||
[str appendString:@"Similar to test 3, designed to mimic a real application\n"];
|
||||
[str appendFormat:@"Execute %i log statements in total.\n", (int)total];
|
||||
[str appendFormat:@"%04.1f%% will be above log level threshold and will be filtered out.\n", verbose];
|
||||
[str appendFormat:@"%04.1f%% will execute Asynchronously.\n", (info + warn)];
|
||||
[str appendFormat:@"%04.1f%% will execute Synchronously.\n", error];
|
||||
[str appendString:@"\n"];
|
||||
[str appendFormat:@"BaseNSLogging :[%.4f][%.4f][%.4f]\n", base[4][0], base[4][1], base[4][2]];
|
||||
[str appendFormat:@"StaticLogging :[%.4f][%.4f][%.4f]\n", fmwk[sn][0][4][0], fmwk[sn][0][4][1], fmwk[sn][0][4][2]];
|
||||
[str appendFormat:@"DynamicLogging:[%.4f][%.4f][%.4f]\n", fmwk[sn][1][4][0], fmwk[sn][1][4][1], fmwk[sn][1][4][2]];
|
||||
[str appendString:@"\n\n\n"];
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
+ (NSString *)csvResults
|
||||
{
|
||||
NSMutableString *str = [NSMutableString stringWithCapacity:1000];
|
||||
|
||||
// What are we trying to do here?
|
||||
//
|
||||
// What we ultimately want is to compare the performance of the framework against the baseline.
|
||||
// This means we want to see the performance of the baseline for test 1,
|
||||
// and then right next to it we want to see the performance of the framework with each various configuration.
|
||||
//
|
||||
// So we want it to kinda look like this for Test 1:
|
||||
//
|
||||
// Base, [min], [avg], [max]
|
||||
// Suite 1 - Static, [min], [avg], [max]
|
||||
// Suite 1 - Dynamic, [min], [avg], [max]
|
||||
// Suite 2 - Static, [min], [avg], [max]
|
||||
// Suite 2 - Dynamic, [min], [avg], [max]
|
||||
// Suite 3 - Static, [min], [avg], [max]
|
||||
// Suite 3 - Dynamic, [min], [avg], [max]
|
||||
//
|
||||
// This will import into Excel just fine.
|
||||
// However, I couldn't get Excel to make a decent looking graph with the data.
|
||||
// Perhaps I'm just not familiar enough with Excel.
|
||||
// But I was able to download OmniGraphSketcher,
|
||||
// and figure out how to create an awesome looking graph in less than 15 minutes.
|
||||
// And thus OmniGraphSketcher wins for me.
|
||||
// The only catch is that it wants to import the data with numbers instead of names.
|
||||
// So I need to convert the output to look like this:
|
||||
//
|
||||
// 0, [min], [avg], [max]
|
||||
// 1, [min], [avg], [max]
|
||||
// 2, [min], [avg], [max]
|
||||
// 3, [min], [avg], [max]
|
||||
// 4, [min], [avg], [max]
|
||||
// 5, [min], [avg], [max]
|
||||
// 6, [min], [avg], [max]
|
||||
//
|
||||
// I can then import the data into OmniGraphSketcher, and rename the X-axis points.
|
||||
|
||||
// static NSTimeInterval base[5][3]; // [test][min,avg,max]
|
||||
//
|
||||
// static NSTimeInterval fmwk[3][2][5][3]; // [suite][file][test][min,avg,max]
|
||||
|
||||
int row = 0;
|
||||
int suite, file, test;
|
||||
|
||||
for (test = 0; test < 5; test++)
|
||||
{
|
||||
[str appendFormat:@"%i, %.4f, %.4f, %.4f\n", row++, base[test][0], base[test][1], base[test][2]];
|
||||
|
||||
for (suite = 0; suite < 3; suite++)
|
||||
{
|
||||
for (file = 0; file < 2; file++)
|
||||
{
|
||||
[str appendFormat:@"%i, %.4f, %.4f, %.4f\n", row++,
|
||||
fmwk[suite][file][test][0], fmwk[suite][file][test][1], fmwk[suite][file][test][2]];
|
||||
}
|
||||
}
|
||||
|
||||
row += 3;
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
+ (void)startPerformanceTests
|
||||
{
|
||||
BOOL runBase = YES;
|
||||
BOOL runSuite1 = YES;
|
||||
BOOL runSuite2 = YES;
|
||||
BOOL runSuite3 = YES;
|
||||
|
||||
if (!runBase && !runSuite1 && !runSuite2 && !runSuite3)
|
||||
{
|
||||
// Nothing to do, all suites disabled
|
||||
return;
|
||||
}
|
||||
|
||||
NSLog(@"Preparing to start performance tests...");
|
||||
NSLog(@"The results will be printed nicely when all logging has completed.\n\n");
|
||||
|
||||
[NSThread sleepForTimeInterval:3.0];
|
||||
|
||||
if (runBase)
|
||||
{
|
||||
[self executeTestsWithBase:YES framework:NO frameworkSuite:0];
|
||||
}
|
||||
|
||||
NSString *printableResults1 = nil;
|
||||
NSString *printableResults2 = nil;
|
||||
NSString *printableResults3 = nil;
|
||||
|
||||
if (runSuite1)
|
||||
{
|
||||
[self configureLoggingForSuite1];
|
||||
[self executeTestsWithBase:NO framework:YES frameworkSuite:1];
|
||||
|
||||
printableResults1 = [self printableResultsForSuite:1];
|
||||
|
||||
NSLog(@"\n\n\n\n");
|
||||
}
|
||||
if (runSuite2)
|
||||
{
|
||||
[self configureLoggingForSuite2];
|
||||
[self executeTestsWithBase:NO framework:YES frameworkSuite:2];
|
||||
|
||||
printableResults2 = [self printableResultsForSuite:2];
|
||||
|
||||
NSLog(@"\n\n\n\n");
|
||||
}
|
||||
if (runSuite3)
|
||||
{
|
||||
[self configureLoggingForSuite3];
|
||||
[self executeTestsWithBase:NO framework:YES frameworkSuite:3];
|
||||
|
||||
printableResults3 = [self printableResultsForSuite:3];
|
||||
|
||||
NSLog(@"\n\n\n\n");
|
||||
}
|
||||
|
||||
if (runSuite1)
|
||||
{
|
||||
NSLog(@"======================================================================");
|
||||
NSLog(@"Benchmark Suite 1:");
|
||||
NSLog(@"Logging framework configured to log to console only.");
|
||||
NSLog(@"\n\n%@", printableResults1);
|
||||
NSLog(@"======================================================================");
|
||||
}
|
||||
if (runSuite2)
|
||||
{
|
||||
NSLog(@"======================================================================");
|
||||
NSLog(@"Benchmark Suite 2:");
|
||||
NSLog(@"Logging framework configured to log to file only.");
|
||||
NSLog(@"\n\n%@", printableResults2);
|
||||
NSLog(@"======================================================================");
|
||||
}
|
||||
if (runSuite3)
|
||||
{
|
||||
NSLog(@"======================================================================");
|
||||
NSLog(@"Benchmark Suite 3:");
|
||||
NSLog(@"Logging framework configured to log to console & file.");
|
||||
NSLog(@"\n\n%@", printableResults3);
|
||||
NSLog(@"======================================================================");
|
||||
}
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
NSString *csvResultsPath = [@"~/Documents/LumberjackBenchmark.csv" stringByExpandingTildeInPath];
|
||||
#else
|
||||
NSString *csvResultsPath = [@"~/Desktop/LumberjackBenchmark.csv" stringByExpandingTildeInPath];
|
||||
#endif
|
||||
|
||||
if (![[NSFileManager defaultManager] fileExistsAtPath:csvResultsPath])
|
||||
{
|
||||
[[NSFileManager defaultManager] createFileAtPath:csvResultsPath contents:nil attributes:nil];
|
||||
}
|
||||
|
||||
NSFileHandle *csvResultsFile = [NSFileHandle fileHandleForWritingAtPath:csvResultsPath];
|
||||
|
||||
NSString *csvResults = [self csvResults];
|
||||
[csvResultsFile writeData:[csvResults dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
|
||||
NSLog(@"CSV results file written to:\n%@", csvResultsPath);
|
||||
}
|
||||
|
||||
@end
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
0, 0.2724, 0.2816, 0.3198
|
||||
1, 0.0000, 0.0000, 0.0000
|
||||
2, 0.0000, 0.0000, 0.0000
|
||||
3, 0.0000, 0.0000, 0.0000
|
||||
4, 0.0000, 0.0000, 0.0000
|
||||
5, 0.0000, 0.0000, 0.0000
|
||||
6, 0.0000, 0.0000, 0.0000
|
||||
10, 0.2710, 0.2757, 0.2826
|
||||
11, 0.0032, 0.0035, 0.0043
|
||||
12, 0.0032, 0.0036, 0.0066
|
||||
13, 0.0032, 0.0032, 0.0033
|
||||
14, 0.0032, 0.0032, 0.0033
|
||||
15, 0.0032, 0.0035, 0.0054
|
||||
16, 0.0032, 0.0037, 0.0065
|
||||
20, 0.2715, 0.2804, 0.3601
|
||||
21, 0.0996, 0.1037, 0.1090
|
||||
22, 0.0984, 0.1042, 0.1265
|
||||
23, 0.0296, 0.0311, 0.0370
|
||||
24, 0.0294, 0.0301, 0.0314
|
||||
25, 0.1118, 0.1523, 0.8192
|
||||
26, 0.1089, 0.1138, 0.1204
|
||||
30, 0.2720, 0.2760, 0.2842
|
||||
31, 0.0251, 0.0269, 0.0287
|
||||
32, 0.0260, 0.0273, 0.0298
|
||||
33, 0.0080, 0.0084, 0.0089
|
||||
34, 0.0079, 0.0084, 0.0091
|
||||
35, 0.0278, 0.0298, 0.0322
|
||||
36, 0.0277, 0.0299, 0.0319
|
||||
40, 0.2707, 0.2797, 0.3354
|
||||
41, 0.0095, 0.0103, 0.0112
|
||||
42, 0.0096, 0.0104, 0.0113
|
||||
43, 0.0028, 0.0030, 0.0034
|
||||
44, 0.0028, 0.0029, 0.0031
|
||||
45, 0.0098, 0.0112, 0.0120
|
||||
46, 0.0104, 0.0114, 0.0122
|
||||
|
@@ -0,0 +1,35 @@
|
||||
0, 0.6169, 0.6700, 0.7403
|
||||
1, 0.0000, 0.0000, 0.0000
|
||||
2, 0.0000, 0.0000, 0.0000
|
||||
3, 0.0000, 0.0000, 0.0000
|
||||
4, 0.0000, 0.0000, 0.0000
|
||||
5, 0.0000, 0.0000, 0.0000
|
||||
6, 0.0000, 0.0000, 0.0000
|
||||
10, 0.6106, 0.6640, 0.7329
|
||||
11, 0.0184, 0.0268, 0.0466
|
||||
12, 0.0185, 0.0243, 0.0477
|
||||
13, 0.0183, 0.0213, 0.0234
|
||||
14, 0.0213, 0.0223, 0.0246
|
||||
15, 0.0182, 0.0231, 0.0426
|
||||
16, 0.0182, 0.0207, 0.0286
|
||||
20, 0.6167, 0.6651, 0.7365
|
||||
21, 0.2614, 0.3090, 0.3966
|
||||
22, 0.2672, 0.3121, 0.3805
|
||||
23, 0.0541, 0.0675, 0.0834
|
||||
24, 0.0541, 0.0576, 0.0824
|
||||
25, 0.2795, 0.3334, 0.4408
|
||||
26, 0.2847, 0.3438, 0.4951
|
||||
30, 0.6077, 0.6560, 0.7029
|
||||
31, 0.0676, 0.0997, 0.2275
|
||||
32, 0.0723, 0.0945, 0.1568
|
||||
33, 0.0188, 0.0191, 0.0203
|
||||
34, 0.0187, 0.0192, 0.0233
|
||||
35, 0.0723, 0.0886, 0.1579
|
||||
36, 0.0774, 0.0934, 0.1095
|
||||
40, 0.6101, 0.6597, 0.7372
|
||||
41, 0.0189, 0.0308, 0.0484
|
||||
42, 0.0237, 0.0322, 0.0468
|
||||
43, 0.0053, 0.0054, 0.0056
|
||||
44, 0.0053, 0.0055, 0.0057
|
||||
45, 0.0233, 0.0347, 0.0780
|
||||
46, 0.0223, 0.0316, 0.0559
|
||||
|
@@ -0,0 +1,35 @@
|
||||
0, 2.4968, 2.5606, 2.7525
|
||||
1, 0.0001, 0.0001, 0.0001
|
||||
2, 0.0000, 0.0000, 0.0000
|
||||
3, 0.0000, 0.0000, 0.0000
|
||||
4, 0.0000, 0.0014, 0.0285
|
||||
5, 0.0000, 0.0000, 0.0001
|
||||
6, 0.0000, 0.0000, 0.0000
|
||||
10, 2.5016, 2.5982, 2.7952
|
||||
11, 0.2299, 0.5288, 1.2570
|
||||
12, 0.2845, 0.5943, 0.8713
|
||||
13, 0.3455, 0.3955, 0.5355
|
||||
14, 0.2955, 0.3814, 0.4431
|
||||
15, 0.2304, 0.5469, 0.9735
|
||||
16, 0.2761, 0.4723, 0.7460
|
||||
20, 2.5067, 2.5589, 2.6211
|
||||
21, 1.5797, 1.8261, 2.1204
|
||||
22, 1.8572, 1.9808, 2.1686
|
||||
23, 0.4198, 0.4877, 0.5202
|
||||
24, 0.4220, 0.4873, 0.5729
|
||||
25, 2.0504, 2.2492, 2.4038
|
||||
26, 2.1307, 2.3070, 2.4938
|
||||
30, 2.5003, 2.5565, 2.6215
|
||||
31, 0.5118, 0.6478, 0.8476
|
||||
32, 0.5157, 0.6690, 0.8628
|
||||
33, 0.1525, 0.2119, 0.2614
|
||||
34, 0.1407, 0.2039, 0.2715
|
||||
35, 0.5535, 0.6758, 0.8734
|
||||
36, 0.5397, 0.6877, 0.8979
|
||||
40, 2.4872, 2.5404, 2.5948
|
||||
41, 0.1454, 0.2044, 0.3307
|
||||
42, 0.1604, 0.2122, 0.2885
|
||||
43, 0.0287, 0.0484, 0.0962
|
||||
44, 0.0286, 0.0480, 0.1025
|
||||
45, 0.1542, 0.2173, 0.3335
|
||||
46, 0.1521, 0.2266, 0.3015
|
||||
|
+35
@@ -0,0 +1,35 @@
|
||||
0, 4.2598, 4.3660, 4.6588
|
||||
1, 0.0000, 0.0000, 0.0000
|
||||
2, 0.0000, 0.0000, 0.0000
|
||||
3, 0.0000, 0.0000, 0.0000
|
||||
4, 0.0000, 0.0000, 0.0000
|
||||
5, 0.0000, 0.0000, 0.0000
|
||||
6, 0.0000, 0.0000, 0.0000
|
||||
10, 4.1986, 4.3513, 4.5088
|
||||
11, 0.5951, 1.5768, 2.3934
|
||||
12, 1.0329, 1.5809, 2.1354
|
||||
13, 0.2904, 0.3407, 0.4357
|
||||
14, 0.2413, 0.3309, 0.3610
|
||||
15, 0.6748, 1.2716, 1.6643
|
||||
16, 0.7571, 1.3473, 2.3276
|
||||
20, 4.2224, 4.3516, 4.5251
|
||||
21, 3.1635, 3.2748, 3.5510
|
||||
22, 3.2119, 3.2817, 3.4837
|
||||
23, 0.4739, 0.4894, 0.6311
|
||||
24, 0.4719, 0.4800, 0.5312
|
||||
25, 3.4027, 3.5172, 3.7449
|
||||
26, 3.3843, 3.4736, 3.7347
|
||||
30, 4.1721, 4.3516, 4.5596
|
||||
31, 0.9029, 1.2367, 1.5529
|
||||
32, 0.9005, 1.2779, 1.5703
|
||||
33, 0.1541, 0.1928, 0.2365
|
||||
34, 0.1533, 0.1986, 0.2383
|
||||
35, 0.8691, 1.1347, 1.5500
|
||||
36, 0.8477, 1.1970, 1.6069
|
||||
40, 4.1914, 4.3369, 4.6224
|
||||
41, 0.3008, 0.3281, 0.4669
|
||||
42, 0.2909, 0.3252, 0.4046
|
||||
43, 0.0470, 0.0478, 0.0488
|
||||
44, 0.0471, 0.0481, 0.0527
|
||||
45, 0.3151, 0.3484, 0.4229
|
||||
46, 0.3111, 0.3480, 0.4136
|
||||
|
+35
@@ -0,0 +1,35 @@
|
||||
0, 4.7533, 4.8965, 5.1468
|
||||
1, 0.0000, 0.0000, 0.0000
|
||||
2, 0.0000, 0.0000, 0.0000
|
||||
3, 0.0000, 0.0000, 0.0000
|
||||
4, 0.0000, 0.0000, 0.0000
|
||||
5, 0.0000, 0.0000, 0.0000
|
||||
6, 0.0000, 0.0000, 0.0000
|
||||
10, 4.7739, 4.8658, 5.0876
|
||||
11, 0.1744, 0.7295, 1.3352
|
||||
12, 0.2169, 0.7354, 1.4760
|
||||
13, 0.1846, 0.2992, 0.4073
|
||||
14, 0.1816, 0.2980, 0.3568
|
||||
15, 0.1840, 0.8697, 1.5107
|
||||
16, 0.0834, 0.7477, 1.1599
|
||||
20, 4.7807, 4.9025, 5.1423
|
||||
21, 3.1918, 3.3175, 3.5093
|
||||
22, 3.1522, 3.2813, 3.5148
|
||||
23, 0.3052, 0.3182, 0.3852
|
||||
24, 0.3061, 0.3171, 0.3410
|
||||
25, 3.5837, 3.7104, 3.9758
|
||||
26, 3.5487, 3.6969, 3.9776
|
||||
30, 4.7613, 4.8927, 5.1026
|
||||
31, 0.8053, 1.0718, 1.3799
|
||||
32, 0.8069, 1.0888, 1.3447
|
||||
33, 0.1194, 0.1577, 0.1813
|
||||
34, 0.1249, 0.1523, 0.1777
|
||||
35, 0.9295, 1.2310, 1.4301
|
||||
36, 0.9240, 1.2278, 1.5636
|
||||
40, 4.8084, 4.8773, 5.0500
|
||||
41, 0.2822, 0.3202, 0.3642
|
||||
42, 0.3091, 0.3291, 0.3686
|
||||
43, 0.0302, 0.0313, 0.0341
|
||||
44, 0.0295, 0.0308, 0.0328
|
||||
45, 0.3281, 0.3669, 0.4102
|
||||
46, 0.3359, 0.3710, 0.3960
|
||||
|
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// StaticLogging.h
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface StaticLogging : NSObject
|
||||
|
||||
+ (void)speedTest0;
|
||||
+ (void)speedTest1;
|
||||
+ (void)speedTest2;
|
||||
+ (void)speedTest3;
|
||||
+ (void)speedTest4;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// StaticLogging.m
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "StaticLogging.h"
|
||||
#import "PerformanceTesting.h"
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
#define FILENAME @"StaticLogging " // Trailing space to match exactly the others in length
|
||||
|
||||
// Debug levels: off, error, warn, info, verbose
|
||||
static const DDLogLevel ddLogLevel = DDLogLevelWarning; // CONST
|
||||
|
||||
@implementation StaticLogging
|
||||
|
||||
+ (void)speedTest0
|
||||
{
|
||||
// Log statements that will not be executed due to log level
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_0_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest0 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest1
|
||||
{
|
||||
// Log statements that will be executed asynchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_1_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest1 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest2
|
||||
{
|
||||
// Log statements that will be executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_2_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest2 - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest3
|
||||
{
|
||||
// Even Spread:
|
||||
//
|
||||
// 25% - Not executed due to log level
|
||||
// 50% - Executed asynchronously
|
||||
// 25% - Executed synchronously
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest3A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest3B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest3C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_3_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest3D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)speedTest4
|
||||
{
|
||||
// Custom Spread
|
||||
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_ERROR_COUNT; i++)
|
||||
{
|
||||
DDLogError(@"%@: SpeedTest4A - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_WARN_COUNT; i++)
|
||||
{
|
||||
DDLogWarn(@"%@: SpeedTest4B - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_INFO_COUNT; i++)
|
||||
{
|
||||
DDLogInfo(@"%@: SpeedTest4C - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
for (NSUInteger i = 0; i < SPEED_TEST_4_VERBOSE_COUNT; i++)
|
||||
{
|
||||
DDLogVerbose(@"%@: SpeedTest4D - %lu", FILENAME, (unsigned long)i);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// main.m
|
||||
// Benchmarking
|
||||
//
|
||||
// CocoaLumberjack Benchmarking
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "PerformanceTesting.h"
|
||||
|
||||
int main(int argc, const char * argv[]) {
|
||||
@autoreleasepool {
|
||||
[PerformanceTesting startPerformanceTests];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+478
@@ -0,0 +1,478 @@
|
||||
## [3.7.1 - Xcode 12 on ???, 2020](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.7.0)
|
||||
|
||||
### Public
|
||||
|
||||
- _TBD_
|
||||
|
||||
## [3.7.0 - Xcode 12 on Oct 2nd, 2020](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.7.0)
|
||||
|
||||
### Public
|
||||
|
||||
- **Breaking change**: Dropped support for iOS 8 (#1153)
|
||||
- Update SPM tools-version to 5.3 to enable Swift 5.3 support (#1148)
|
||||
- Add backend for swift-log (#1164)
|
||||
- Specify CocoaPods version to ensure `swift_version` attribute works (#1167)
|
||||
- Simplify `DDLogFileManager` callbacks for archived log files (#1166)
|
||||
|
||||
## [3.6.2 - Xcode 11.6 on July 31st, 2020](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.6.2)
|
||||
|
||||
### Public
|
||||
- Fix warnings when building with SPM bundled with Swift 5.2 / Xcode 11.4 (#1132)
|
||||
- Added Swift name for DDQualityOfServiceName constants.
|
||||
- Don't localize timestamps in `DDefaultFileLogFormatter` (#1151)
|
||||
- Allow logging arbitrary objects via Swift log functions (#1146)
|
||||
|
||||
### Repository
|
||||
- Switch from Travis to GitHub Actions (#1135, #1140, #1150, #1152)
|
||||
|
||||
## [3.6.1 - Xcode 11.3.1 on Jan 25th, 2020](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.6.1)
|
||||
|
||||
### Public
|
||||
- Improve error handling during log file creation in DDFileLogger & DDLogFileManager (#1103 / #1111)
|
||||
- Improve nullability annotations in public headers (#1111 / #1112 / #1119)
|
||||
- Added support for thread QOS in DDLogMessage class (#1124)
|
||||
|
||||
### Internal
|
||||
- Fix rolling timer being rescheduled rapidly due to leeway (#1106 / #1107)
|
||||
- Fix -didArchiveLogFile: returning the file name instead of the file path (#1078)
|
||||
- Fix setxattr() function usage (#1118)
|
||||
- Fix NSDateFormatter thread safety (#1121)
|
||||
- Fix -lt_dataForMessage: duplicated code (#1122)
|
||||
|
||||
## [3.6.0 - Xcode 11 on October 2nd, 2019](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.6.0)
|
||||
|
||||
### Public
|
||||
- Swift Package Manager Support (#1083)
|
||||
- New `willLogMessage:` and `didLogMessage:` methods on `DDFileLogger` which provide access to the current log file info.
|
||||
|
||||
### Internal
|
||||
- Fix issue with log archiving in the simulator (#1098)
|
||||
- Limit assertion to non-simulator build (#1100)
|
||||
|
||||
## [3.5.3 - Xcode 10.2 on Apr 24th, 2019](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.5.3)
|
||||
|
||||
### Public
|
||||
- Additional compatibility with Swift 5 (backwards compatible with Swift 4) (#1043)
|
||||
- Fix warning building with Xcode 10.2 (#1059)
|
||||
- Set Xcode 10.2 and Swift 5.0 as a default (#1064)
|
||||
- Fix format string crash (#1066)
|
||||
|
||||
### Internal
|
||||
- Fix warning about syntax (#1054) (#1065)
|
||||
- Remove banned APIs (#1056) (#1057)
|
||||
- Add CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER & fix warnings (#1059)
|
||||
- Use LLONG_MAX instead of LONG_LONG_MAX (#1062)
|
||||
|
||||
## [3.5.2 - Xcode 10.1 on Mar 15th, 2019](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.5.2)
|
||||
|
||||
### Public
|
||||
- Fix reusing of log files after rolling (#1042)
|
||||
- Fix creation of too many log files (#1049)
|
||||
- Preliminary compatibility with Swift 5 (backwards compatible with Swift 4) (#1044)
|
||||
- core: loggers os logger variations have been added (#1039)
|
||||
|
||||
### Internal
|
||||
- Sync internal queues to prevent cleaning up log files too soon in tests (#1053)
|
||||
- DDLog checks for NULL values and for global queue dispatching has been added (#1045)
|
||||
|
||||
## [3.5.1 - Xcode 10 on Feb 4th, 2019](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.5.1)
|
||||
|
||||
### Public
|
||||
- Fix high CPU usage because of empty fileAttributes and / or too high rollingFrequceny (#1028)
|
||||
|
||||
## [3.5.0 - Xcode 10 on Jan 25th, 2019](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.5.0)
|
||||
|
||||
### Public
|
||||
- Added `logFileHeader` property to `DDLogFileManagerDefault`. Override to set header for each created file. #998
|
||||
- `DDFileLogger` now accepts a `dispatch_queue_t` which it uses to run callbacks. If not provided, the default global queue is used. #1003
|
||||
- Added opt-in buffering to `DDFileLogger`. Call `wrapWithBuffer` to create a file logger which buffers. #1001, #1012
|
||||
- Add `DDAssert` and `DDAssertionFailure` functions for Swift #934
|
||||
- Add `DD_LOG_LEVEL` define (which can be set in `GCC_PREPROCESSOR_DEFINITIONS`) for Swift to set default log level (enables stripping for strings that are not logged). #952
|
||||
- Add `asyncLoggingEnabled` global variable to control asynchronous logging. #1019
|
||||
|
||||
### Internal
|
||||
- Prevent memory access errors caused by a failed fetch #944
|
||||
- Fix common warnings emitted by `-Wall`, `-Wconversion`, `-Wextra`, etc #943, #931
|
||||
- Fixes issue that could cause log messages to become interleaved when there are multiple `DDFileLogger`s #985
|
||||
- `DispatchQueueFormatter` knows about `com.apple.root.default-qos.overcommit` now #932
|
||||
- Fix thread safety issues in `DDFileLogger`. Makes it a little harder to deadlock in some cases. #986, #1003, #946
|
||||
- Fix availability checks and memory leak #996
|
||||
|
||||
### Repository
|
||||
- Reduce podspec to two subspecs and remove customized modulemap #976
|
||||
- Add danger support for PR checks #962 - fixes #956
|
||||
- Merged framework targets + using `xcconfig` + deployment target `iOS 8` and `Mac OS 10.10` #959 e97da34
|
||||
- Documentation update #955 e7414ae 0239196 #933
|
||||
- Full links to Docs and other resources so they are resolved on external pages (i.e. https://cocoapods.org/pods/CocoaLumberjack) e9d6971
|
||||
- Replace `OSAtomic` with `stdatomic` in `DDDispatchQueueLogFormatter` #957 #958
|
||||
- Add Stale Bot + configuration #953
|
||||
- Update to Xcode 10 and Swift 4.2 compiler #950
|
||||
- Xcode 10 scheme changes #949
|
||||
- Update incomplete BSD 3-Clause License #942
|
||||
- Updated to CocoaPods 1.5.3 2d0590f
|
||||
- Use Xcode 9.4 image for tests #939
|
||||
- Xcode (schemes) version bumps #938
|
||||
- Update demo and documentation about CustomLogLevels #1023
|
||||
|
||||
## [3.4.2 - Xcode 9.3 on Apr 17th, 2018](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.4.2)
|
||||
- Update README.md #912
|
||||
- Fixed typo in pull request template #913
|
||||
- Fix `-Wimplicit-retain-self` warnings #915
|
||||
- Update memory management in dynamic logging #916
|
||||
- Xcode 9.3 support #921 #923 #926 #927
|
||||
- Add extern "C" for Objective-C++ #922
|
||||
- Add `flush` method to the `DDFileLogger` #928
|
||||
|
||||
## [3.4.1 - Xcode 9.1 on Jan 26th, 2018](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.4.1)
|
||||
- Fix `DDLogFileManagerDefault` `-isLogFile` #909
|
||||
- Fix locking the main thread #911
|
||||
|
||||
## [3.4.0 - Xcode 9.1 on Jan 3rd, 2018](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.4.0)
|
||||
- Fix Travis CI #895
|
||||
- Fix typos #896
|
||||
- Fix schemes and link errors #897 #899 #903 #907
|
||||
|
||||
## [3.3.0 - Xcode 9 on Oct 3rd, 2017](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.3.0)
|
||||
- Xcode 9 support and Swift 4 support #890 #893
|
||||
- Replace `OSSpinLock` with `pthread_mutex` #889
|
||||
|
||||
## [3.2.1 - Xcode 9 beta on Aug 21st, 2017](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.2.1)
|
||||
- Xcode 9 beta support #874 #873 #884 #883 #882
|
||||
- Fixed some issues around deleting log files #868 #879
|
||||
- update 'Use Log Level per Logger' doc #888
|
||||
- Remove empty asset catalogs so that they don't show up in Open Quickly #877
|
||||
- Fixed typo in pull request template #880
|
||||
|
||||
## [3.2.0 - Swift 3.0.0, Xcode 8.3 on May 3rd, 2017](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.2.0)
|
||||
- Xcode 8.3 support #860 #853
|
||||
- added a very basic `os_log` (unified logging) logger #850 #856
|
||||
- Use `NSFileProtectionType` instead of `NSString` #866
|
||||
- Optimized timestamp calculation in `DDTTYLogger` #851
|
||||
- Updated docs #864
|
||||
- Fix Travis #863
|
||||
- Fixed nullability of `DDLogMessage.function` #849 `DDExtractFileNameWithoutExtension` #845
|
||||
- Ignore `Carthage/Build` directory #862
|
||||
- Updated schemes #859 #857
|
||||
|
||||
## [3.1.0 - Swift 3.0.1, Xcode 8.1 on Feb 22nd, 2017](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.1.0)
|
||||
- Swift 3.0.1 and Xcode 8.1 support via #816
|
||||
- Fix Carthage build and updated the podspec structure #819 #818 #784 #790 #782 #778 #815
|
||||
- Fix CLIColor.h not included in umbrella header #781 #796 #813 #783
|
||||
- Fix crash in `[DDLog log:level:flag:context:file:function:line:tag:format:]` #831 #830
|
||||
- Code improvements:
|
||||
- using class properties #779
|
||||
- nullability #803 #809 #776
|
||||
- fix static analyzer issues #822 #828
|
||||
- optimized `USE_DISPATCH_CURRENT_QUEUE_LABEL` and `USE_DISPATCH_GET_CURRENT_QUEUE` macros #829
|
||||
- fixed dispatch_source_set_timer() usage #834
|
||||
- fixed misuse of non null parameter in `DDFileLogger fileAttributes` #835
|
||||
- store calendar in logger queue specifics for multi-thread safety #837
|
||||
- reenable default `init` method for `DDLogMessage` class #838
|
||||
- Added option to not copy messages #832
|
||||
- Added new hooks when adding loggers and formatters #836
|
||||
- Ability to create new log files every day #736
|
||||
- Skip messages in ASL logger which are filtered out by the formatter #786 #742
|
||||
- Fixed #823 by adding a `hash` implementation for `DDFileLogger` - same as `isEqual`, it only considers the `filePath` 7ceed08
|
||||
- Fix Travis CI build #807
|
||||
- Updated docs #798 #808 #811 #810 #820
|
||||
|
||||
## [3.0.0 - Swift 3.0, Xcode 8 on Sep 21st, 2016](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/3.0.0)
|
||||
- Swift 3.0 and Xcode 8 support via #769, fixes #771 and #772. Many thanks to @ffried @max-potapov @chrisdoc @BarakRL @devxoul and the others who contributed
|
||||
|
||||
## [2.4.0 - Swift 2.3 on Sep 19th, 2016](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.4.0)
|
||||
- Swift 2.3 explicit so that the project compiles on Xcode 8 - #747 #773 fix #762 #763 #766
|
||||
- CocoaPods 1.0.0 fully adopted - 0f5a793 637dfc1 70439fe #729
|
||||
- Fix CLIColor.h not found for non-AppKit binaries w/o clang modules #745
|
||||
- Retrieve the `DDLogLevel` of each logger associated to `DDLog` #753
|
||||
- updated doc: #727 a9f54c9 #741, diagrams in 8bd128d
|
||||
- Added CONTRIBUTING, ISSUE and PULL_REQUEST TEMPLATE and added a small Communication section to the Readme
|
||||
- Fixed an issue with one demo #760
|
||||
|
||||
## [2.3.0 - Swift 2.2, Xcode7.3 on May 2nd, 2016](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.3.0)
|
||||
- Updated to Swift 2.2 - #704
|
||||
- replaced deprecated `__FUNCTION__`, `__FILE__`, `__LINE__` with newly added to Swift 2.2: `#function`, `#file`, `#line`
|
||||
- Xcode 7.3 update - #692 #662
|
||||
- simplify usage and integration of the static library target - #657
|
||||
- DDLog usable via instances - #679
|
||||
- Swift cleanup - #649
|
||||
- Enable Application extension API only for tvOS - #701
|
||||
- Added `appletvos` and `appletvsimulator` to `SUPPORTED_PLATFORMS` and set `TVOS_DEPLOYMENT_TARGET` - #707
|
||||
- fixed `OSSpinLock` init issue - #653
|
||||
- Added check to prevent duplicate loggers - #682
|
||||
- fixed typo in import - #693
|
||||
- updated the docs - #646 #650 #656 #655 #661 #664 #667 #684 #724
|
||||
|
||||
## [2.2.0 - TVOS, Xcode7.1 on Oct 28th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.2.0)
|
||||
- added `tvOS` support (thanks [@sinoru](https://github.com/sinoru)) - [#634](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/634) [#640](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/640) [#630](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/630) [#628](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/628) [#618](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/618) [#611](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/611)
|
||||
- Remove `(escaping)` from the Swift `@autoclosure` parameters - [#642](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/642)
|
||||
|
||||
## [2.1.0 - Swift 2.0, WatchOS, Xcode7 on Oct 23rd, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.1.0)
|
||||
- Fixed the version for the Carthage builds - see [#633](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/633)
|
||||
- Improved documentation
|
||||
|
||||
## [2.1.0 RC - Swift 2.0, WatchOS, Xcode7 on Oct 22nd, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.1.0-rc)
|
||||
- Refactored the `NSDateFormatter` related code to fix a bunch of issues: [#621](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/621)
|
||||
- Fix Issue [#488](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/488): Support `DDLog` without `AppKit Dependency` (`#define DD_CLI`): [#627](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/627)
|
||||
- Re-add `NS_DESIGNATED_INITIALIZER` [#619](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/619)
|
||||
|
||||
## [2.1.0 Beta - Swift 2.0, WatchOS, Xcode7 on Oct 12th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.1.0-beta)
|
||||
- Updated the library to use Swift 2.0 and Xcode 7 [#617](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/617) [#545](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/545) [#534](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/534)
|
||||
- WatchOS support (2.0) [#583](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/583) [#581](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/581) [#579](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/579)
|
||||
|
||||
## [2.0.3 Patch for 2.0.0 on Oct 13th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.3)
|
||||
|
||||
- Compatibility with Xcode 6 that was broken by the 2.0.2 patch - [f042fd3](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/f042fd3)
|
||||
|
||||
## [2.0.2 Patch for 2.0.0 on Oct 12th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.2)
|
||||
|
||||
- Swift 1.2 fixes [#546](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/546) [#578](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/578) plus and update to Swift 2.0 [5627dff](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/5627dff) imported from our swift_2.0 branch
|
||||
- Make build work on `tvOS` [#597](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/597)
|
||||
- Make `CocoaLumberjackSwift-iOS` target depends on `CocoaLumberjack-iOS` [#575](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/575)
|
||||
- `APPLICATION_EXTENSION_API_ONLY` to `YES` for Extensions [#576](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/576)
|
||||
- Remove unnecessary `NS_DESIGNATED_INITIALIZER`s [#593](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/593) fixes [#592](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/592)
|
||||
- Add ignore warning mark for `DDMakeColor` [#553](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/553)
|
||||
- Kill unused function warnings from `DDTTYLogger.h` [#613](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/613)
|
||||
- Flag unused parameters as being unused to silence strict warnings [#566](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/566)
|
||||
- Extend ignore unused warning pragma to cover all platforms [#559](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/559)
|
||||
- Removed images.xcassets from Mobile project [#580](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/580)
|
||||
- Silence the Xcode 7 upgrade check - [#595](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/595)
|
||||
- Fix import for when CL framework files are manually imported into project [#560](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/560)
|
||||
- Don't override defines in case they're already set at project level [#551](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/551)
|
||||
- log full filepath when failing to set attribute [#550](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/550)
|
||||
- Fix issue in standalone build with `DDLegacyMacros.h` [#552](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/552)
|
||||
- Update `CustomFormatters.md` with proper thread-safe blurb [#555](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/555)
|
||||
- typo in parameter's variable name fixed [#568](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/568)
|
||||
- Typo: minor fix [#571](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/571)
|
||||
- Surely we should be adding 1, not 0 for `OSAtomicAdd32` ? [#587](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/587)
|
||||
- `rollLogFileWithCompletionBlock` calls back on background queue instead of main queue [#589](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/589)
|
||||
- Removing extraneous `\` on line 55 [#600](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/600)
|
||||
- Updated `GettingStarted.md` to include `ddLogLevel` [#602](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/602)
|
||||
- Remove redundant check for `processorCount` availability [#604](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/604)
|
||||
|
||||
## [2.0.1 Patch for 2.0.0 on Jun 25th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.1)
|
||||
|
||||
- **Carthage support** [#521](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/521) [#526](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/526)
|
||||
- fixed crash on `DDASLLogCapture` when `TIME` or `TIME_NSEC` is `NULL` [#484](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/484)
|
||||
- **Swift** fixes and improvements: [#483](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/483) [#509](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/509) [#518](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/518) [#522](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/522) [5eafceb](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/5eafceb)
|
||||
- Unit tests: [#500](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/500) [#498](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/498) [#499](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/499)
|
||||
- Fix [#478](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/478) by reverting [#473](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/473)
|
||||
- Add `armv7s` to static library [#538](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/538)
|
||||
- Fix `NSLog` `threadid` mismatch with iOS 8+/OSX 10.10+ [#514](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/514)
|
||||
- Fixed the `LogV` macros so that avalist is no longer undefined [#511](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/511)
|
||||
- Using type safe `DDColor` alias instead of #define directive [#506](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/506)
|
||||
- Several fixes/tweaks to `DDASLLogCapture` [#512](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/512)
|
||||
- Prevent duplicate log entries when both `DDASLLogCapture` and `DDASLLogger` are used [#515](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/515)
|
||||
- Fix memory leaks in `DDTTYLogger`, add self annotations to blocks [#536](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/536)
|
||||
- Update older syntax to modern subscripting for array access [#482](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/482)
|
||||
- Remove execute permission on non-executable files [#517](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/517)
|
||||
- Change code samples to use `DDLogFlagWarning` [#520](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/520)
|
||||
- Fix seemingly obvious typo in the `toLogLevel` function [#508](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/508)
|
||||
|
||||
## [CocoaLumberjack 2.0.0 on Mar 13th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0)
|
||||
|
||||
The library was strongly refactored, with a few goals in mind:
|
||||
- Swift support - that we will release in a separate milestone, since CocoaPods 0.36.0 just got out
|
||||
- Unit tests support
|
||||
- reorganised things (on disk)
|
||||
- better coding style
|
||||
|
||||
See [Migration from 1.x to 2.x](https://github.com/CocoaLumberjack/CocoaLumberjack#migrating-to-2x)
|
||||
|
||||
## [2.0.0-rc2 on Feb 20th, 2015](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-rc2)
|
||||
|
||||
- Bucket of Swift improvements - [#434](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/434) [#437](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/437) [#449](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/449) [#440](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/440)
|
||||
- Fixed [#433](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/433) (build issue due to dispatch_queue properties) - [#455](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/455)
|
||||
- Enable codesign for iOS device framework builds - [#444](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/444)
|
||||
- Declare `automaticallyAppendNewlineForCustomFormatters` properties as `nonatomic` - [#443](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/443)
|
||||
- Warning fixes & type standardization - [#419](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/419)
|
||||
- Legacy checks updated - [#424](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/424)
|
||||
- Documentation updates
|
||||
|
||||
## [2.0.0-rc on Dec 11th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-rc)
|
||||
|
||||
- Fix `dispatch_queue_t` properties.
|
||||
- Fix `registeredClasses` crashes at launch.
|
||||
|
||||
## [2.0.0-beta4 on Nov 7th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-beta4)
|
||||
|
||||
- Major refactoring and clean up.
|
||||
- Remove superfluous `log` from property names and use underscore for direct variable access.
|
||||
- Preliminary Swift support through `CocoaLumberjack.swift`.
|
||||
- Automatic 1.9.x legacy support when `DDLog.h` is imported instead of the new `CocoaLumberjack.h`.
|
||||
|
||||
## [2.0.0-beta3 on Oct 21st, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-beta3)
|
||||
|
||||
- Modernize flag variables to be `NS_OPTIONS`/`NS_ENUM`.
|
||||
- Change the log flags and levels to `NSUInteger`.
|
||||
- Fix warning when compiled with assertions blocked.
|
||||
- Crash fixes.
|
||||
|
||||
## [2.0.0-beta2 on Sep 30th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-beta2)
|
||||
|
||||
- Cleanup code.
|
||||
- Match `NSLog` read UID functionality in `DDASLLogger`.
|
||||
- Update framework and static libraries.
|
||||
|
||||
## [2.0.0 Beta on Aug 12th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/2.0.0-beta)
|
||||
|
||||
See [Migrate from 1.x to 2.x](https://github.com/CocoaLumberjack/CocoaLumberjack#migrating-to-2x)
|
||||
|
||||
## [1.9.2 Updated patch release for 1.9.0 on Aug 11th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.9.2)
|
||||
|
||||
- Fixed `NSCalendar components:fromDate:` crash - [#140](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/140) [#307](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/307) [#216](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/216)
|
||||
- New `DDAssert` macros - [#306](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/306)
|
||||
- Limit log growth by disk space only, not the number of files - [#195](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/195) [#303](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/303)
|
||||
- Change the mechanism for adding new line character (i.e. '\n\) to log messages in some logger - [#308](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/308) [#310](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/310)
|
||||
- Fixed deprecations - [#320](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/320) [#312](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/312) [#317](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/317)
|
||||
- `aslmsg` not freed and causing memory leak - [#314](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/314)
|
||||
- Fixed `CompressingLogFileManager` compression bug - [#315](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/315)
|
||||
- Remove unnecessary `NULL` check before `free()` - [#316](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/316)
|
||||
|
||||
## [1.9.1 Patch release for 1.9.0 on Jun 30th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.9.1)
|
||||
|
||||
- Fixed issues in rolling frequency - [#243](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/243) [#295](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/295) [@georgekola](https://github.com/georgekola)
|
||||
- Fixed critical issue, `addLogger` method should use a full bit mask instead of `LOG_LEVEL_VERBOSE`, otherwise extended logs or extra flags are ignored [fe6824c](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/fe6824c) [@robbiehanson](https://github.com/robbiehanson)
|
||||
- Performance optimisation: use compiler macros to skip iOS version checks - [4656d3b](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/4656d3b) [#298](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/298) [#291](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/291) [@robbiehanson](https://github.com/robbiehanson) [@liviur](https://github.com/liviur)
|
||||
- Changed the `Build Active Architecture Only` to `NO` [#294](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/294) [#293](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/293)
|
||||
- Optimisation by reusing `NSDateFormatter` instances [#296](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/296) [#301](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/301)
|
||||
|
||||
## [1.9.0 New ASL capture module, several File logger fixes on May 23rd, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.9.0)
|
||||
|
||||
- New ASL capture module [#242](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/242) [#263](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/263)
|
||||
- Override default `NSFileProtection` handling [#285](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/285)
|
||||
- Replaced warnings when ARC was not enabled with errors [#284](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/284)
|
||||
- Fix for issue [#278](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/278) where really large log files can keep growing [#280](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/280)
|
||||
- Fixed Xcode warnings [#279](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/279)
|
||||
- Update `calendarUnitFlags` with new iOS SDK values [#277](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/277)
|
||||
- Fix possible crash in `[NSCalendar components:fromDate:]` [#277](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/277)
|
||||
- Fix [#262](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/262) inverted ifs when renaming log [#264](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/264)
|
||||
- Proper way of doing singletons (via `dispatch_once`) [#259](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/259)
|
||||
- Explicitly declare `DDFileLogger` and `DDDispatchQueueLogFormatter ` properties as atomic to avoid Xcode warnings [#258](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/258)
|
||||
- Set `NSFileProtectionKey` on the temporary file created during compression [#256](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/256)
|
||||
- Fix a rare crash in `CompressingLogFileManager` caused by an unchecked result from read [#255](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/255)
|
||||
- Add explicit casts for integer conversion [#253](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/253)
|
||||
- Replace use of `NSThread.detachNewThreadSelector` [#251](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/251)
|
||||
- Add a constructor override for `initWithLogsDirectory:` [#252](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/252)
|
||||
- Check and log the streamError whenever we fail to write during compression and log any failures when removing the original file or cleaning up the temporary file after compression failed [#250](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/250)
|
||||
- Following Apple's guidelines for iOS Static Libraries [#249](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/249)
|
||||
- Some extra warnings for the mobile framework xcode project [a2e5666](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/a2e5666)
|
||||
- Update `FineGrainedLoggingAppDelegate.m` [#244](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/244)
|
||||
- New `[DDLog log:message:]` primitive [7f8af2e](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/7f8af2e)
|
||||
- Fixed issue [#181](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/181) when logging messages in iOS7 devices aren't properly retrieved by `asl_search` [#240](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/240)
|
||||
- Allow prevention of log file reuse [#238](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/238)
|
||||
- `DDTTYLogger`: Favour XcodeColors environment variable [#237](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/237)
|
||||
- `DDLog`: calling `atexit_b` in CLI applications, that use Foundation framework [#234](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/234)
|
||||
|
||||
## [1.8.1 AllLoggers and bugfixes on Feb 14th, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.8.1)
|
||||
|
||||
- read access to all loggers - [#217](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/217) [#219](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/219)
|
||||
- fixed bug with archived logs not being handled correctly on iOS simulator - [#218](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/218)
|
||||
- log the `strerror(errno)` value when `setxattr()` fails - [#211](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/211)
|
||||
- Add a check for an archived log before overwriting - [#214](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/214)
|
||||
- improved safety by using assertions instead of comments (`DDLog` in the core) - [#221](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/221)
|
||||
- added Lumberjack logo :)
|
||||
|
||||
## [1.8.0 Better CL support, custom logfile name format, bugfixes on Jan 21st, 2014](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.8.0)
|
||||
|
||||
- `DDFileLogger` custom logfile (name) format - [#208](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/208)
|
||||
- Security static analysis fix - [#202](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/202)
|
||||
- `DDFileLogger`: using `CFBundleIdentifier` as a log filename prefix on OSX and iOS - [#206](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/206)
|
||||
- Allow disabling of specific levels per-logger - [#204](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/204)
|
||||
- Improve support for OS X command line tools - [#194](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/194)
|
||||
- `DDFileLogger`: fixed crash that occurred in case if application name == nil - [#198](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/198)
|
||||
- `DDFileLogger`: fixed comment - [#199](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/199)
|
||||
- Fix Travis - [#205](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/205)
|
||||
|
||||
## [1.7.0 New log file naming convention and CocoaLumberjack organisation on Dec 10th, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.7.0)
|
||||
|
||||
- new log file naming convention - [#191](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/191)
|
||||
- completed transition to **CocoaLumberjack** organisation - [#188](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/188)
|
||||
|
||||
## [1.6.5.1 Patch release for Xcode 4.4+ compatibility on Dec 4th, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.5.1)
|
||||
|
||||
- fixed compatibility with Xcode 4.4+ [#187](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/187)
|
||||
|
||||
## [1.6.5 File Logger refactoring, Multi Formatter, preffixed extension classes on Dec 3rd, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.5)
|
||||
|
||||
`DDFileLogger` refactoring and fixes (thanks [@dvor](https://github.com/dvor) and [@an0](https://github.com/an0)):
|
||||
- Fixed [#63](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/63) Loggers don't flush in Command Line Tool [#184](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/184)
|
||||
- Fixed [#52](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/52) Force log rotation [#183](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/183)
|
||||
- Fixed [#55](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/55) After deleting log file or log dir they aren't created again without relaunching the app [#183](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/183)
|
||||
- Fixed [#129](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/129) [iOS] `DDFileLogger` causes crash when logging from background app [#183](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/183)
|
||||
- Fixed [#153](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/153) Log file on iPhone only contains a single line [#177](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/177)
|
||||
- Fixed [#155](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/155) How do I combine all my log levels into one file? [#177](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/177)
|
||||
- Fixed [#175](https://github.com/CocoaLumberjack/CocoaLumberjack/issues/175) `DFileLogger` `creationDate` bug on 64-bit iOS system [#177](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/177)
|
||||
- Allow customizing the naming convention for log files to use timestamps [#174](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/174)
|
||||
|
||||
Other:
|
||||
- Implemented multiple formatter (`DDMultiFormatter` - alows chaining of formatters) [#178](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/178)
|
||||
- Added DD prefix to extension classes (`ContextFilterLogFormatter` and `DispatchQueueLogFormatter`) [#178](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/178)
|
||||
- Updated code indentation: Tabs changed to spaces [#180](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/180)
|
||||
- Included `DDLog+LOGV.h` in Cocoapods sources [d253bd7](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/d253bd7)
|
||||
- other fixes/improvements
|
||||
|
||||
## [1.6.4 Fix compatibility with 3rd party frameworks on Nov 21st, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.4)
|
||||
|
||||
* "Fix" conflicts with 3rd party libraries using `CocoaLumberjack` [#172](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/172)
|
||||
* Ignore deprecated warning for `dispatch_get_current_queue` [#167](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/167)
|
||||
* Add new `DEBUG` log level support to included loggers [#166](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/166)
|
||||
* Method declarations that make it easier to extend/modify `DispatchQueueLogFormatter` [#164](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/164)
|
||||
|
||||
## [1.6.3 New macros, updated podspec and bug fixes on Apr 2nd, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.3)
|
||||
|
||||
* Add `LOGV`-style macros [#161](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/161)
|
||||
* Fix getting queue's label [#159](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/159)
|
||||
* New log level `DEBUG` [#145](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/145)
|
||||
* Use `DISPATCH_CURRENT_QUEUE_LABEL` if available [#159](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/159)
|
||||
* Different `logLevel` per each logger [#151](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/151)
|
||||
* Created 2 subspecs, `Core` and `Extensions` [#152](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/152)
|
||||
* Updated observer for keypath using `NSStringFromSelector` + `@selector` [38e5da3](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/38e5da3)
|
||||
* Replaced `id` return type with `instancetype` [ebee454](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/ebee454)
|
||||
* Remove implicit conversion warnings [#149](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/149)
|
||||
* `DDTTYLogger`: Allow to set default color profiles for all contexts at once [#146](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/146) [#158](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/158)
|
||||
* `DDTTYLogger`: By default apply `setForegroundColor:backgroundColor:forFlag:` to `LOG_CONTEXT_ALL` [#154](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/154)
|
||||
* `DispatchQueueLogFormatter`: Use modern Objective-C [#142](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/142)
|
||||
* `DispatchQueueLogFormatter`: Make sure to always use a `NSGregorianCalendar` for date formatter [#142](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/142)
|
||||
* Replaced explicit reference to class name in `logFileWithPath` factory method [#131](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/131)
|
||||
* Catch exceptions in `logMessage:` [#130](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/130)
|
||||
* Fix enum type conversion warnings [#124](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/124)
|
||||
* Add deployment target condition for workaround [#121](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/121)
|
||||
* Fix static analyzer warnings about `nil` values in dictionary [#122](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/122)
|
||||
* Fix `dispatch_get_current_queue` crash [#121](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/121)
|
||||
* Fixing colors in greyscale color-space not working [d019cfd](https://github.com/CocoaLumberjack/CocoaLumberjack/commit/d019cfd)
|
||||
* Guard around `dispatch_resume()` being called with null pointer [#107](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/107)
|
||||
* `NULL` safety checks [#107](https://github.com/CocoaLumberjack/CocoaLumberjack/pull/107)
|
||||
|
||||
## [1.6.2 on Apr 2nd, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.2)
|
||||
|
||||
## [1.6.1 on Apr 2nd, 2013](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6.1)
|
||||
|
||||
## [1.6 on Jul 3rd, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.6)
|
||||
|
||||
## [1.5.1 on Jul 3rd, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.5.1)
|
||||
|
||||
## [1.5 on Jul 3rd, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.5)
|
||||
|
||||
## [1.4.1 on Jul 3rd, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.4.1)
|
||||
|
||||
## [1.4 on Jul 3rd, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.4)
|
||||
|
||||
## [1.3.3 on Mar 30th, 2012](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.3.3)
|
||||
|
||||
## [1.3.2 on Dec 23rd, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.3.2)
|
||||
|
||||
## [1.3.1 on Dec 9th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.3.1)
|
||||
|
||||
## [1.3 on Dec 9th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.3)
|
||||
|
||||
## [1.2.3 on Dec 9th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.2.3)
|
||||
|
||||
## [1.2.2 on Dec 9th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.2.2)
|
||||
|
||||
## [1.2.1 on Oct 13th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.2.1)
|
||||
|
||||
## [1.2 on Oct 13th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.2)
|
||||
|
||||
## [1.1 on Oct 13th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.1)
|
||||
|
||||
## [1.0 on Oct 13th, 2011](https://github.com/CocoaLumberjack/CocoaLumberjack/releases/tag/1.0)
|
||||
@@ -0,0 +1,39 @@
|
||||
Pod::Spec.new do |s|
|
||||
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '3.7.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for macOS, iOS, tvOS and watchOS.'
|
||||
s.homepage = 'https://github.com/CocoaLumberjack/CocoaLumberjack'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/CocoaLumberjack/CocoaLumberjack.git',
|
||||
:tag => "#{s.version}" }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.preserve_paths = 'README.md'
|
||||
|
||||
s.ios.deployment_target = '9.0'
|
||||
s.osx.deployment_target = '10.10'
|
||||
s.watchos.deployment_target = '3.0'
|
||||
s.tvos.deployment_target = '9.0'
|
||||
|
||||
s.cocoapods_version = '>= 1.4.0'
|
||||
s.requires_arc = true
|
||||
s.swift_version = '5.0'
|
||||
|
||||
s.default_subspecs = 'Core'
|
||||
|
||||
s.subspec 'Core' do |ss|
|
||||
ss.source_files = 'Sources/CocoaLumberjack/**/*.{h,m}'
|
||||
ss.private_header_files = 'Sources/CocoaLumberjack/DD*Internal.{h}'
|
||||
end
|
||||
|
||||
s.subspec 'Swift' do |ss|
|
||||
ss.dependency 'CocoaLumberjack/Core'
|
||||
ss.source_files = 'Sources/CocoaLumberjackSwift/**/*.swift', 'Sources/CocoaLumberjackSwiftSupport/include/**/*.{h}'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
#include "Module-Debug.xcconfig"
|
||||
#include "App-Shared.xcconfig"
|
||||
|
||||
// Space-separated list of preprocessor macros of the form `foo` or `foo=bar`
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DEBUG=1 DD_LOG_LEVEL=DDLogLevelAll
|
||||
|
||||
// A list of compilation conditions to enable for conditional compilation expressions.
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG
|
||||
@@ -0,0 +1,8 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
#include "Module-Release.xcconfig"
|
||||
#include "App-Shared.xcconfig"
|
||||
|
||||
// Space-separated list of preprocessor macros of the form `foo` or `foo=bar`
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DD_LOG_LEVEL=DDLogLevelWarning
|
||||
@@ -0,0 +1,5 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
// Code will load on this and later versions of watchOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs.
|
||||
WATCHOS_DEPLOYMENT_TARGET = 5.0
|
||||
@@ -0,0 +1,37 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
#include "Module-Shared.xcconfig"
|
||||
|
||||
// Specifies whether binary files that are copied during the build, such as in a Copy Bundle Resources or Copy Files build phase, should be stripped of debugging symbols.
|
||||
COPY_PHASE_STRIP = NO
|
||||
|
||||
// The type of debug information to produce.
|
||||
DEBUG_INFORMATION_FORMAT = dwarf
|
||||
|
||||
// Controls whether assertion logic provided by `NSAssert` is included in the preprocessed source code or is elided during preprocessing.
|
||||
ENABLE_NS_ASSERTIONS = YES
|
||||
|
||||
// When this setting is activated, the product will be built with options appropriate for running automated tests, such as making private interfaces accessible to the tests.
|
||||
ENABLE_TESTABILITY = YES
|
||||
|
||||
// Specifies the degree to which the generated code is optimized for speed and binary size.
|
||||
GCC_OPTIMIZATION_LEVEL = 0
|
||||
|
||||
// Space-separated list of preprocessor macros of the form `foo` or `foo=bar`
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DEBUG=1
|
||||
|
||||
// Metal debug info - not sure why we need it
|
||||
MTL_ENABLE_DEBUG_INFO = YES
|
||||
|
||||
// If enabled, only the active architecture is built.
|
||||
ONLY_ACTIVE_ARCH = YES
|
||||
|
||||
// This setting controls the way the Swift files in a module are rebuilt.
|
||||
SWIFT_COMPILATION_MODE = singlefile
|
||||
|
||||
// Swift optimization (none, speed, size, wholemodule)
|
||||
SWIFT_OPTIMIZATION_LEVEL = -Onone
|
||||
|
||||
// If enabled, perform validation checks on the product as part of the build process.
|
||||
VALIDATE_PRODUCT = NO
|
||||
@@ -0,0 +1,34 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
#include "Module-Shared.xcconfig"
|
||||
|
||||
// Specifies whether binary files that are copied during the build, such as in a Copy Bundle Resources or Copy Files build phase, should be stripped of debugging symbols.
|
||||
COPY_PHASE_STRIP = YES
|
||||
|
||||
// The type of debug information to produce.
|
||||
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
|
||||
|
||||
// Controls whether assertion logic provided by `NSAssert` is included in the preprocessed source code or is elided during preprocessing.
|
||||
ENABLE_NS_ASSERTIONS = NO
|
||||
|
||||
// When this setting is activated, the product will be built with options appropriate for running automated tests, such as making private interfaces accessible to the tests.
|
||||
ENABLE_TESTABILITY = NO
|
||||
|
||||
// Specifies the degree to which the generated code is optimized for speed and binary size.
|
||||
GCC_OPTIMIZATION_LEVEL = s
|
||||
|
||||
// Metal debug info
|
||||
MTL_ENABLE_DEBUG_INFO = NO
|
||||
|
||||
// If enabled, only the active architecture is built.
|
||||
ONLY_ACTIVE_ARCH = NO
|
||||
|
||||
// This setting controls the way the Swift files in a module are rebuilt.
|
||||
SWIFT_COMPILATION_MODE = wholemodule
|
||||
|
||||
// Swift optimization (none, speed, size, wholemodule)
|
||||
SWIFT_OPTIMIZATION_LEVEL = -O
|
||||
|
||||
// If enabled, perform validation checks on the product as part of the build process.
|
||||
VALIDATE_PRODUCT = YES
|
||||
@@ -0,0 +1,248 @@
|
||||
// Configuration settings file format documentation can be found at:
|
||||
// https://help.apple.com/xcode/#/dev745c5c974
|
||||
|
||||
// This setting is deprecated as of Xcode 8.3 and may not be supported in future versions. It is recommended that you disable the setting. If enabled, both `#include <header.h>`-style and `#include "header.h"`-style directives search the paths in `USER_HEADER_SEARCH_PATHS` before `HEADER_SEARCH_PATHS`
|
||||
ALWAYS_SEARCH_USER_PATHS = NO
|
||||
|
||||
// Warn whn using non-localized strings.
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
|
||||
// Warn for missing nullability attributes
|
||||
CLANG_ANALYZER_NONNULL = YES
|
||||
|
||||
// Warn when a number object, such as an instance of `NSNumber`, `CFNumberRef`, `OSNumber`, or `OSBoolean` is compared or converted to a primitive value instead of another object.
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE
|
||||
|
||||
// Choose a standard or non-standard C++ language dialect.
|
||||
CLANG_CXX_LANGUAGE_STANDARD = gnu++0x
|
||||
|
||||
// Choose a version of the C++ standard library to use.
|
||||
CLANG_CXX_LIBRARY = libc++
|
||||
|
||||
// Enables the use of modules for system APIs. System headers are imported as semantic modules instead of raw headers.
|
||||
CLANG_ENABLE_MODULES = YES
|
||||
|
||||
// Compiles reference-counted Objective-C code (when garbage collection is not enabled) to use Automatic Reference Counting.
|
||||
CLANG_ENABLE_OBJC_ARC = YES
|
||||
|
||||
// Warn about block captures of implicitly autoreleasing parameters.
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES
|
||||
|
||||
// Warn about implicit conversions to boolean values that are suspicious. For example, writing `if (foo)` where `foo` is the name a function will trigger a warning.
|
||||
CLANG_WARN_BOOL_CONVERSION = YES
|
||||
|
||||
// Warn about suspicious uses of the comma operator.
|
||||
CLANG_WARN_COMMA = YES
|
||||
|
||||
// Warn about implicit conversions of constant values that cause the constant value to change, either through a loss of precision, or entirely in its meaning.
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES
|
||||
|
||||
// Warn if an Objective-C class either subclasses a deprecated class or overrides a method that has been marked deprecated or unavailable.
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES
|
||||
|
||||
// Warn about direct accesses to the Objective-C `isa` pointer instead of using a runtime API.
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR
|
||||
|
||||
// Warns about issues in documentation comments (`doxygen`-style) such as missing or incorrect documentation tags.
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES
|
||||
|
||||
// Warn about declaring the same method more than once within the same `@interface`.
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
|
||||
|
||||
// Warn about loop bodies that are suspiciously empty.
|
||||
CLANG_WARN_EMPTY_BODY = YES
|
||||
|
||||
// Warn about implicit conversions between different kinds of enum values. For example, this can catch issues when using the wrong enum flag as an argument to a function or method.
|
||||
CLANG_WARN_ENUM_CONVERSION = YES
|
||||
|
||||
// Warn if all paths through a function call itself.
|
||||
CLANG_WARN_INFINITE_RECURSION = YES
|
||||
|
||||
// Warn about implicit conversions between pointers and integers. For example, this can catch issues when one incorrectly intermixes using `NSNumber*`'s and raw integers.
|
||||
CLANG_WARN_INT_CONVERSION = YES
|
||||
|
||||
// Warn about non-literal expressions that evaluate to zero being treated as a null pointer.
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES
|
||||
|
||||
// Warn about `@property` declarations that are implicitly atomic.
|
||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = NO
|
||||
|
||||
// Warn about implicit retains of `self` within blocks, which can create a retain-cycle.
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
|
||||
|
||||
// Warn about implicit conversions from Objective-C literals to values of incompatible type.
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES
|
||||
|
||||
// Warn about classes that unintentionally do not subclass a root class, such as `NSObject`.
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR
|
||||
|
||||
// Warns when a quoted include is used instead of a framework style include in a framework header.
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES
|
||||
|
||||
// Warn about ranged-based for loops.
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES
|
||||
|
||||
// Warn about non-prototype declarations.
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES
|
||||
|
||||
// Warn about suspicious uses of `std::move`.
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES
|
||||
|
||||
// Warn if an API that is newer than the deployment target is used without "if (@available(...))" guards.
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
|
||||
|
||||
// Warns about potentially unreachable code.
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES
|
||||
|
||||
// The path to a file specifying code-signing entitlements.
|
||||
CODE_SIGN_ENTITLEMENTS =
|
||||
|
||||
// The name, also known as the *common name*, of a valid code-signing certificate in a keychain within your keychain path. A missing or invalid certificate will cause a build error.
|
||||
CODE_SIGN_IDENTITY =
|
||||
|
||||
// This setting defines the current version of the project. The value must be a integer or floating point number, such as `57` or `365.8`.
|
||||
CURRENT_PROJECT_VERSION = 1
|
||||
|
||||
// If enabled, the product will be treated as defining its own module. This enables automatic production of LLVM module map files when appropriate, and allows the product to be imported as a module.
|
||||
DEFINES_MODULE = YES
|
||||
|
||||
// macOS Catalyst support
|
||||
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
|
||||
|
||||
// Determines the compatibility version of the resulting library, bundle, or framework binary.
|
||||
DYLIB_COMPATIBILITY_VERSION = 1
|
||||
|
||||
// This setting defines the current version of any framework built by the project. As with `CURRENT_PROJECT_VERSION`, the value must be an integer or floating point number, such as `57` or `365.8`.
|
||||
DYLIB_CURRENT_VERSION = 1
|
||||
|
||||
// Sets the base value for the internal `install path` (`LC_ID_DYLIB`) in a dynamic library. This will be combined with the `EXECUTABLE_PATH` to form the full install path.
|
||||
DYLIB_INSTALL_NAME_BASE = @rpath
|
||||
|
||||
// Activating this setting indicates that the target or project should generate bitcode during compilation for platforms and architectures that support it. For Archive builds, bitcode will be generated in the linked binary for submission to the App Store. For other builds, the compiler and linker will check whether the code complies with the requirements for bitcode generation, but will not generate actual bitcode.
|
||||
ENABLE_BITCODE = YES
|
||||
ENABLE_BITCODE[sdk=macosx*] = NO
|
||||
|
||||
// Controls whether `objc_msgSend` calls must be cast to the appropriate function pointer type before being called.
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES
|
||||
|
||||
// This is a list of paths to folders containing frameworks to be searched by the compiler for both included or imported header files when compiling C, Objective-C, C++, or Objective-C++, and by the linker for frameworks used by the product. Paths are delimited by whitespace, so any paths with spaces in them must be properly quoted.
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited)
|
||||
|
||||
// Choose a standard or non-standard C language dialect.
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99
|
||||
|
||||
// Faster function calls for applications. Not appropriate for shared libraries, which need to be position-independent.
|
||||
GCC_DYNAMIC_NO_PIC = NO
|
||||
|
||||
// In C, allocate even uninitialized global variables in the data section of the object file, rather than generating them as common blocks.
|
||||
GCC_NO_COMMON_BLOCKS = YES
|
||||
|
||||
// When enabled, all symbols are declared `private extern` unless explicitly marked to be exported using `\_\_attribute\_\_((visibility("default")))` in code. If not enabled, all symbols are exported unless explicitly marked as `private extern`.
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO
|
||||
|
||||
// Enabling this option causes all warnings to be treated as errors.
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = NO
|
||||
|
||||
// Warn if a value is implicitly converted from a 64-bit type to a 32-bit type. This is a subset of the warnings provided by -Wconversion.
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES
|
||||
|
||||
// Warn if a structure's initializer has some fields missing.
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
|
||||
|
||||
// Warn when a source file does not end with a newline.
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES
|
||||
|
||||
// Causes warnings to be emitted about missing prototypes.
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES
|
||||
|
||||
// Causes warnings to be emitted when a function with a defined return type (not `void`) contains a return statement without a return-value. Also emits a warning when a function is defined without specifying a return type.
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR
|
||||
|
||||
// Warn if an aggregate or union initializer is not fully bracketed.
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES
|
||||
|
||||
// Warn whenever a local variable shadows another local variable, parameter or global variable or whenever a builtin function is shadowed.
|
||||
GCC_WARN_SHADOW = YES
|
||||
|
||||
// Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned.
|
||||
GCC_WARN_SIGN_COMPARE = YES
|
||||
|
||||
// Warn if a `@selector(...)` expression referring to an undeclared selector is found. A selector is considered undeclared if no method with that name has been declared before the `@selector(...)` expression, either explicitly in an `@interface` or `@protocol` declaration, or implicitly in an `@implementation` section.
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES
|
||||
|
||||
// Warn if a variable might be clobbered by a `setjmp` call or if an automatic variable is used without prior initialization. The compiler may not detect all cases where an automatic variable is initialized or all usage patterns that may lead to use prior to initialization.
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE
|
||||
|
||||
// Warn whenever a static function is declared but not defined or a noninline static function is unused.
|
||||
GCC_WARN_UNUSED_FUNCTION = YES
|
||||
|
||||
// Warn whenever a label is declared but not used.
|
||||
GCC_WARN_UNUSED_LABEL = YES
|
||||
|
||||
// Warn whenever a function parameter is unused aside from its declaration.
|
||||
GCC_WARN_UNUSED_PARAMETER = NO
|
||||
|
||||
// Warn whenever a local variable or nonconstant static variable is unused aside from its declaration.
|
||||
GCC_WARN_UNUSED_VARIABLE = YES
|
||||
|
||||
// This is a list of paths to folders to be searched by the compiler for included or imported header files when compiling C, Objective-C, C++, or Objective-C++. Paths are delimited by whitespace, so any paths with spaces in them need to be properly quoted.
|
||||
HEADER_SEARCH_PATHS = $(inherited)
|
||||
|
||||
// Code will load on this and later versions of iOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs.
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0
|
||||
|
||||
// This is a list of paths to be added to the `runpath` search path list for the image being created. At runtime, `dyld` uses the `runpath` when searching for dylibs whose load path begins with `@rpath/`.
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks
|
||||
|
||||
// This is a list of paths to folders to be searched by the linker for libraries used by the product. Paths are delimited by whitespace, so any paths with spaces in them need to be properly quoted.
|
||||
LIBRARY_SEARCH_PATHS = $(inherited)
|
||||
|
||||
// Code will load on this and later versions of macOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs.
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.10
|
||||
|
||||
MARKETING_VERSION = 3.7.0
|
||||
|
||||
OTHER_C_FLAGS = -Wextra
|
||||
|
||||
// Options defined in this setting are passed to invocations of the linker.
|
||||
OTHER_LDFLAGS = -ObjC
|
||||
|
||||
// A string that uniquely identifies the bundle. The string should be in reverse DNS format using only alphanumeric characters (`A-Z`, `a-z`, `0-9`), the dot (`.`), and the hyphen (`-`). This value is used as the `CFBundleIdentifier` in the `Info.plist` of the built bundle.
|
||||
PRODUCT_BUNDLE_IDENTIFIER_PREFIX = com.deusty
|
||||
PRODUCT_BUNDLE_IDENTIFIER = $(PRODUCT_BUNDLE_IDENTIFIER_PREFIX).${PRODUCT_NAME:rfc1034identifier}
|
||||
|
||||
// This is the basename of the product generated by the target.
|
||||
PRODUCT_NAME = $(TARGET_NAME)
|
||||
|
||||
// Must contain a profile name (or UUID). A missing or invalid profile will cause a build error. Use in conjunction with [DEVELOPMENT_TEAM] to fully specify provisioning profile.
|
||||
PROVISIONING_PROFILE_SPECIFIER =
|
||||
|
||||
// Activating this setting will cause Xcode to run the `Clang` static analysis tool on qualifying source files during every build.
|
||||
RUN_CLANG_STATIC_ANALYZER = YES
|
||||
|
||||
// The name or path of the base SDK being used during the build. The product will be built against the headers and libraries located inside the indicated SDK. This path will be prepended to all search paths, and will be passed through the environment to the compiler and linker. Additional SDKs can be specified in the `ADDITIONAL_SDKS` setting.
|
||||
SDKROOT = macosx
|
||||
|
||||
// If enabled, don't install built products even if deployment locations are active.
|
||||
SKIP_INSTALL = YES
|
||||
|
||||
// The list of supported platforms from which a base SDK can be used. This setting is used if the product can be built for multiple platforms using different SDKs.
|
||||
SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator watchsimulator watchos appletvsimulator appletvos
|
||||
|
||||
// macOS Catalyst support
|
||||
SUPPORTS_MACCATALYST = YES
|
||||
|
||||
// Swift language version
|
||||
SWIFT_VERSION = 5.0
|
||||
|
||||
// The build system uses the selected device to set the correct value for the `UIDeviceFamily` key it adds to the target's `Info.plist` file. This also drives the --target-device flag to actool, which determines the idioms selected during catalog compilation for iOS platforms.
|
||||
TARGETED_DEVICE_FAMILY = 1,2,3,4
|
||||
|
||||
// Code will load on this and later versions of tvOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs.
|
||||
TVOS_DEPLOYMENT_TARGET = 9.0
|
||||
|
||||
// Selects the process used for version-stamping generated files. * *None:* Use no versioning system. * *Apple Generic:* Use the current project version setting. [apple-generic]
|
||||
VERSIONING_SYSTEM = apple-generic
|
||||
|
||||
// Code will load on this and later versions of watchOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs.
|
||||
WATCHOS_DEPLOYMENT_TARGET = 3.0
|
||||
+207
@@ -0,0 +1,207 @@
|
||||
import Foundation
|
||||
import Danger
|
||||
|
||||
fileprivate extension Danger.File {
|
||||
var isInSources: Bool { hasPrefix("Sources/") }
|
||||
var isInTests: Bool { hasPrefix("Tests/") }
|
||||
var isInDemos: Bool { hasPrefix("Demos/") }
|
||||
var isInBenchmarking: Bool { hasPrefix("Benchmarking/") }
|
||||
|
||||
var isInVendor: Bool { contains("/Vendor/") }
|
||||
var isInFMDB: Bool { contains("/FMDB/") }
|
||||
|
||||
var isSourceFile: Bool {
|
||||
hasSuffix(".swift") || hasSuffix(".h") || hasSuffix(".m")
|
||||
}
|
||||
|
||||
private static let spmOnlyTargetNames: Set<String> = [
|
||||
"CocoaLumberjackSwiftLogBackend",
|
||||
]
|
||||
var isSPMOnlySourceFile: Bool {
|
||||
guard isSourceFile else { return false }
|
||||
if isInSources {
|
||||
return Self.spmOnlyTargetNames.contains(where: { contains("/\($0)/") })
|
||||
} else if isInTests {
|
||||
return Self.spmOnlyTargetNames.contains(where: { contains("/\($0)Tests/") })
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
var isSwiftPackageDefintion: Bool {
|
||||
hasPrefix("Package") && hasSuffix(".swift")
|
||||
}
|
||||
|
||||
var isDangerfile: Bool {
|
||||
self == "Dangerfile.swift"
|
||||
}
|
||||
}
|
||||
|
||||
let danger = Danger()
|
||||
let git = danger.git
|
||||
|
||||
// Sometimes it's a README fix, or something like that - which isn't relevant for
|
||||
// including in a project's CHANGELOG for example
|
||||
let isDeclaredTrivial = danger.github?.pullRequest.title.contains("#trivial") ?? false
|
||||
let hasSourceChanges = (git.modifiedFiles + git.createdFiles).contains { $0.isInSources }
|
||||
|
||||
// Make it more obvious that a PR is a work in progress and shouldn't be merged yet
|
||||
if danger.github?.pullRequest.title.contains("WIP") == true {
|
||||
warn("PR is marked as Work in Progress")
|
||||
}
|
||||
|
||||
// Warn when there is a big PR
|
||||
if let additions = danger.github?.pullRequest.additions, let deletions = danger.github?.pullRequest.deletions,
|
||||
case let sum = additions + deletions, sum > 1000 {
|
||||
warn("Pull request is relatively big (\(sum) lines changed). If this PR contains multiple changes, consider splitting it into separate PRs for easier reviews.")
|
||||
}
|
||||
|
||||
// Changelog entries are required for changes to library files.
|
||||
if hasSourceChanges && !isDeclaredTrivial && !git.modifiedFiles.contains("CHANGELOG.md") {
|
||||
warn("Any changes to library code should be reflected in the CHANGELOG. Please consider adding a note there about your change.")
|
||||
}
|
||||
|
||||
// Warn when library files has been updated but not tests.
|
||||
if hasSourceChanges && !git.modifiedFiles.contains(where: { $0.isInTests }) {
|
||||
warn("The library files were changed, but the tests remained unmodified. Consider updating or adding to the tests to match the library changes.")
|
||||
}
|
||||
|
||||
// Run SwiftLint
|
||||
SwiftLint.lint(.modifiedAndCreatedFiles(directory: "Sources"))
|
||||
|
||||
// Added (or removed) library files need to be added (or removed) from the
|
||||
// Carthage Xcode project to avoid breaking things for our Carthage users.
|
||||
let xcodeProjectFile: Danger.File = "Lumberjack.xcodeproj/project.pbxproj"
|
||||
let xcodeProjectWasModified = git.modifiedFiles.contains(xcodeProjectFile)
|
||||
if (git.createdFiles + git.deletedFiles).contains(where: { $0.isInSources && $0.isSourceFile && !$0.isSPMOnlySourceFile })
|
||||
&& !xcodeProjectWasModified {
|
||||
fail("Added or removed library files require the Carthage Xcode project to be updated.")
|
||||
}
|
||||
|
||||
// Check if Carthage modified and CocoaPods didn't or vice-versa
|
||||
let podspecWasModified = git.modifiedFiles.contains("CocoaLumberjack.podspec")
|
||||
if xcodeProjectWasModified && !podspecWasModified {
|
||||
warn("The Carthage project was modified but CocoaPods podspec wasn't. Did you forget to update the podspec?")
|
||||
}
|
||||
if !xcodeProjectWasModified && podspecWasModified {
|
||||
warn("The CocoaPods podspec was modified but the Carthage project wasn't. Did you forget to update the xcodeproj?")
|
||||
}
|
||||
|
||||
// Check xcodeproj settings are not changed
|
||||
// Check to see if any of our project files contains a line with "SOURCE_ROOT" which indicates that the file isn't in sync with Finder.
|
||||
if xcodeProjectWasModified {
|
||||
let acceptedSettings: Set<String> = [
|
||||
"APPLICATION_EXTENSION_API_ONLY",
|
||||
"ASSETCATALOG_COMPILER_APPICON_NAME",
|
||||
"ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME",
|
||||
"ATTRIBUTES",
|
||||
"CODE_SIGN_IDENTITY",
|
||||
"COMBINE_HIDPI_IMAGES",
|
||||
"FRAMEWORK_VERSION",
|
||||
"GCC_PRECOMPILE_PREFIX_HEADER",
|
||||
"GCC_PREFIX_HEADER",
|
||||
"IBSC_MODULE",
|
||||
"INFOPLIST_FILE",
|
||||
"MODULEMAP_FILE",
|
||||
"PRIVATE_HEADERS_FOLDER_PATH",
|
||||
"PRODUCT_BUNDLE_IDENTIFIER",
|
||||
"PRODUCT_NAME",
|
||||
"PUBLIC_HEADERS_FOLDER_PATH",
|
||||
"SDKROOT",
|
||||
"SUPPORTED_PLATFORMS",
|
||||
"TARGETED_DEVICE_FAMILY",
|
||||
"WRAPPER_EXTENSION",
|
||||
]
|
||||
[xcodeProjectFile]
|
||||
.lazy
|
||||
.filter { FileManager.default.fileExists(atPath: $0) }
|
||||
.forEach { projectFile in
|
||||
danger.utils.readFile(projectFile).split(separator: "\n").enumerated().forEach { (offset, line) in
|
||||
if line.contains("sourceTree = SOURCE_ROOT;") &&
|
||||
line.contains("PBXFileReference") &&
|
||||
!line.contains("path = Sources/CocoaLumberjackSwiftSupport/include/") {
|
||||
warn(message: "Files should be in sync with project structure", file: projectFile, line: offset + 1)
|
||||
}
|
||||
if let range = line.range(of: "[A-Z_]+ = .*;", options: .regularExpression) {
|
||||
let setting = String(line[range].prefix(while: { $0 != " " }))
|
||||
if !acceptedSettings.contains(setting) {
|
||||
warn(message: "Xcode settings need to remain in Configs/*.xcconfig. Please move " + setting + " to the xcconfig file", file: projectFile, line: offset + 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check Copyright
|
||||
let copyrightLines = (
|
||||
source: [
|
||||
"// Software License Agreement (BSD License)",
|
||||
"//",
|
||||
"// Copyright (c) 2010-2020, Deusty, LLC",
|
||||
"// All rights reserved.",
|
||||
"//",
|
||||
"// Redistribution and use of this software in source and binary forms,",
|
||||
"// with or without modification, are permitted provided that the following conditions are met:",
|
||||
"//",
|
||||
"// * Redistributions of source code must retain the above copyright notice,",
|
||||
"// this list of conditions and the following disclaimer.",
|
||||
"//",
|
||||
"// * Neither the name of Deusty nor the names of its contributors may be used",
|
||||
"// to endorse or promote products derived from this software without specific",
|
||||
"// prior written permission of Deusty, LLC.",
|
||||
],
|
||||
demos: [
|
||||
"//",
|
||||
"// ",
|
||||
"// ",
|
||||
"//",
|
||||
"// CocoaLumberjack Demos",
|
||||
"//",
|
||||
],
|
||||
benchmarking: [
|
||||
"//",
|
||||
"// ",
|
||||
"// ",
|
||||
"//",
|
||||
"// CocoaLumberjack Benchmarking",
|
||||
"//",
|
||||
]
|
||||
)
|
||||
|
||||
// let sourcefilesToCheck = Dir.glob("*/*/*") // uncomment when we want to test all the files (locally)
|
||||
let sourcefilesToCheck = Set(git.modifiedFiles + git.createdFiles)
|
||||
let filesWithInvalidCopyright = sourcefilesToCheck.lazy
|
||||
.filter { $0.isSourceFile }
|
||||
.filter { !$0.isSwiftPackageDefintion }
|
||||
.filter { !$0.isDangerfile }
|
||||
.filter { !$0.isInVendor && !$0.isInFMDB }
|
||||
.filter { FileManager.default.fileExists(atPath: $0) }
|
||||
.filter {
|
||||
// Use correct copyright lines depending on source file location
|
||||
let (expectedLines, shouldMatchExactly): (Array<String>, Bool)
|
||||
if $0.isInDemos {
|
||||
expectedLines = copyrightLines.demos
|
||||
shouldMatchExactly = false
|
||||
} else if $0.isInBenchmarking {
|
||||
expectedLines = copyrightLines.benchmarking
|
||||
shouldMatchExactly = false
|
||||
} else {
|
||||
expectedLines = copyrightLines.source
|
||||
shouldMatchExactly = true
|
||||
}
|
||||
let actualLines = danger.utils.readFile($0).split(separator: "\n").lazy.map(String.init)
|
||||
if shouldMatchExactly {
|
||||
return !actualLines.starts(with: expectedLines)
|
||||
} else {
|
||||
return !zip(actualLines, expectedLines).allSatisfy { $0.starts(with: $1) }
|
||||
}
|
||||
}
|
||||
if !filesWithInvalidCopyright.isEmpty {
|
||||
filesWithInvalidCopyright.forEach {
|
||||
markdown(message: "Invalid copyright!", file: $0, line: 1)
|
||||
}
|
||||
warn("""
|
||||
Copyright is not valid. See our default copyright in all of our files (Sources, Demos and Benchmarking use different formats).
|
||||
Invalid files:
|
||||
\(filesWithInvalidCopyright.map { "- \($0)" }.joined(separator: "\n"))
|
||||
""")
|
||||
}
|
||||
Vendored
+319
@@ -0,0 +1,319 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7D8F9C217A10A000B496D7 /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7D8F9B217A10A000B496D7 /* CocoaLumberjack.framework */; };
|
||||
DCC29DE114730AA9005E8FD4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCC29DE014730AA9005E8FD4 /* Cocoa.framework */; };
|
||||
DCC29DEB14730AA9005E8FD4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DCC29DE914730AA9005E8FD4 /* InfoPlist.strings */; };
|
||||
DCC29DED14730AA9005E8FD4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29DEC14730AA9005E8FD4 /* main.m */; };
|
||||
DCC29DF114730AA9005E8FD4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = DCC29DEF14730AA9005E8FD4 /* Credits.rtf */; };
|
||||
DCC29DF414730AA9005E8FD4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29DF314730AA9005E8FD4 /* AppDelegate.m */; };
|
||||
DCC29DF714730AA9005E8FD4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = DCC29DF514730AA9005E8FD4 /* MainMenu.xib */; };
|
||||
DCC29E1F14730B05005E8FD4 /* BaseNSLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29E1814730B05005E8FD4 /* BaseNSLogging.m */; };
|
||||
DCC29E2014730B05005E8FD4 /* DynamicLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29E1A14730B05005E8FD4 /* DynamicLogging.m */; };
|
||||
DCC29E2114730B05005E8FD4 /* PerformanceTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29E1C14730B05005E8FD4 /* PerformanceTesting.m */; };
|
||||
DCC29E2214730B05005E8FD4 /* StaticLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC29E1E14730B05005E8FD4 /* StaticLogging.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0A7D8F9B217A10A000B496D7 /* CocoaLumberjack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CocoaLumberjack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
43AF80212174E19700C0D9DC /* Module-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Release.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF80222174E19700C0D9DC /* Module-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF80232174E19700C0D9DC /* Module-Shared.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Shared.xcconfig"; sourceTree = "<group>"; };
|
||||
DCC29DDC14730AA9005E8FD4 /* BenchmarkMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BenchmarkMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DCC29DE014730AA9005E8FD4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
DCC29DE314730AA9005E8FD4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
DCC29DE414730AA9005E8FD4 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||
DCC29DE514730AA9005E8FD4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
DCC29DE814730AA9005E8FD4 /* BenchmarkMac-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BenchmarkMac-Info.plist"; sourceTree = "<group>"; };
|
||||
DCC29DEA14730AA9005E8FD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
DCC29DEC14730AA9005E8FD4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
DCC29DEE14730AA9005E8FD4 /* BenchmarkMac-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BenchmarkMac-Prefix.pch"; sourceTree = "<group>"; };
|
||||
DCC29DF014730AA9005E8FD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
|
||||
DCC29DF214730AA9005E8FD4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
DCC29DF314730AA9005E8FD4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
DCC29DF614730AA9005E8FD4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
DCC29E1714730B05005E8FD4 /* BaseNSLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseNSLogging.h; sourceTree = "<group>"; };
|
||||
DCC29E1814730B05005E8FD4 /* BaseNSLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseNSLogging.m; sourceTree = "<group>"; };
|
||||
DCC29E1914730B05005E8FD4 /* DynamicLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicLogging.h; sourceTree = "<group>"; };
|
||||
DCC29E1A14730B05005E8FD4 /* DynamicLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DynamicLogging.m; sourceTree = "<group>"; };
|
||||
DCC29E1B14730B05005E8FD4 /* PerformanceTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformanceTesting.h; sourceTree = "<group>"; };
|
||||
DCC29E1C14730B05005E8FD4 /* PerformanceTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PerformanceTesting.m; sourceTree = "<group>"; };
|
||||
DCC29E1D14730B05005E8FD4 /* StaticLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticLogging.h; sourceTree = "<group>"; };
|
||||
DCC29E1E14730B05005E8FD4 /* StaticLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StaticLogging.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
DCC29DD914730AA9005E8FD4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0A7D8F9C217A10A000B496D7 /* CocoaLumberjack.framework in Frameworks */,
|
||||
DCC29DE114730AA9005E8FD4 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
43AF80202174E19700C0D9DC /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80212174E19700C0D9DC /* Module-Release.xcconfig */,
|
||||
43AF80222174E19700C0D9DC /* Module-Debug.xcconfig */,
|
||||
43AF80232174E19700C0D9DC /* Module-Shared.xcconfig */,
|
||||
);
|
||||
name = Configs;
|
||||
path = ../../../Configs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DD114730AA9005E8FD4 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80202174E19700C0D9DC /* Configs */,
|
||||
DCC29E1614730AC6005E8FD4 /* Benchmarking */,
|
||||
DCC29DE614730AA9005E8FD4 /* BenchmarkMac */,
|
||||
DCC29DDF14730AA9005E8FD4 /* Frameworks */,
|
||||
DCC29DDD14730AA9005E8FD4 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DDD14730AA9005E8FD4 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCC29DDC14730AA9005E8FD4 /* BenchmarkMac.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DDF14730AA9005E8FD4 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0A7D8F9B217A10A000B496D7 /* CocoaLumberjack.framework */,
|
||||
DCC29DE014730AA9005E8FD4 /* Cocoa.framework */,
|
||||
DCC29DE214730AA9005E8FD4 /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DE214730AA9005E8FD4 /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCC29DE314730AA9005E8FD4 /* AppKit.framework */,
|
||||
DCC29DE414730AA9005E8FD4 /* CoreData.framework */,
|
||||
DCC29DE514730AA9005E8FD4 /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DE614730AA9005E8FD4 /* BenchmarkMac */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCC29DF214730AA9005E8FD4 /* AppDelegate.h */,
|
||||
DCC29DF314730AA9005E8FD4 /* AppDelegate.m */,
|
||||
DCC29DF514730AA9005E8FD4 /* MainMenu.xib */,
|
||||
DCC29DE714730AA9005E8FD4 /* Supporting Files */,
|
||||
);
|
||||
path = BenchmarkMac;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DE714730AA9005E8FD4 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCC29DE814730AA9005E8FD4 /* BenchmarkMac-Info.plist */,
|
||||
DCC29DE914730AA9005E8FD4 /* InfoPlist.strings */,
|
||||
DCC29DEC14730AA9005E8FD4 /* main.m */,
|
||||
DCC29DEE14730AA9005E8FD4 /* BenchmarkMac-Prefix.pch */,
|
||||
DCC29DEF14730AA9005E8FD4 /* Credits.rtf */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29E1614730AC6005E8FD4 /* Benchmarking */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DCC29E1714730B05005E8FD4 /* BaseNSLogging.h */,
|
||||
DCC29E1814730B05005E8FD4 /* BaseNSLogging.m */,
|
||||
DCC29E1914730B05005E8FD4 /* DynamicLogging.h */,
|
||||
DCC29E1A14730B05005E8FD4 /* DynamicLogging.m */,
|
||||
DCC29E1B14730B05005E8FD4 /* PerformanceTesting.h */,
|
||||
DCC29E1C14730B05005E8FD4 /* PerformanceTesting.m */,
|
||||
DCC29E1D14730B05005E8FD4 /* StaticLogging.h */,
|
||||
DCC29E1E14730B05005E8FD4 /* StaticLogging.m */,
|
||||
);
|
||||
name = Benchmarking;
|
||||
path = ../../../Benchmarking;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
DCC29DDB14730AA9005E8FD4 /* BenchmarkMac */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DCC29DFA14730AA9005E8FD4 /* Build configuration list for PBXNativeTarget "BenchmarkMac" */;
|
||||
buildPhases = (
|
||||
DCC29DD814730AA9005E8FD4 /* Sources */,
|
||||
DCC29DD914730AA9005E8FD4 /* Frameworks */,
|
||||
DCC29DDA14730AA9005E8FD4 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = BenchmarkMac;
|
||||
productName = BenchmarkMac;
|
||||
productReference = DCC29DDC14730AA9005E8FD4 /* BenchmarkMac.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
DCC29DD314730AA9005E8FD4 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0900;
|
||||
};
|
||||
buildConfigurationList = DCC29DD614730AA9005E8FD4 /* Build configuration list for PBXProject "BenchmarkMac" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = DCC29DD114730AA9005E8FD4;
|
||||
productRefGroup = DCC29DDD14730AA9005E8FD4 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
DCC29DDB14730AA9005E8FD4 /* BenchmarkMac */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
DCC29DDA14730AA9005E8FD4 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DCC29DEB14730AA9005E8FD4 /* InfoPlist.strings in Resources */,
|
||||
DCC29DF114730AA9005E8FD4 /* Credits.rtf in Resources */,
|
||||
DCC29DF714730AA9005E8FD4 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
DCC29DD814730AA9005E8FD4 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
DCC29DED14730AA9005E8FD4 /* main.m in Sources */,
|
||||
DCC29DF414730AA9005E8FD4 /* AppDelegate.m in Sources */,
|
||||
DCC29E1F14730B05005E8FD4 /* BaseNSLogging.m in Sources */,
|
||||
DCC29E2014730B05005E8FD4 /* DynamicLogging.m in Sources */,
|
||||
DCC29E2114730B05005E8FD4 /* PerformanceTesting.m in Sources */,
|
||||
DCC29E2214730B05005E8FD4 /* StaticLogging.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
DCC29DE914730AA9005E8FD4 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
DCC29DEA14730AA9005E8FD4 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DEF14730AA9005E8FD4 /* Credits.rtf */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
DCC29DF014730AA9005E8FD4 /* en */,
|
||||
);
|
||||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DCC29DF514730AA9005E8FD4 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
DCC29DF614730AA9005E8FD4 /* en */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
DCC29DF814730AA9005E8FD4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF80222174E19700C0D9DC /* Module-Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
DCC29DF914730AA9005E8FD4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF80212174E19700C0D9DC /* Module-Release.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
DCC29DFB14730AA9005E8FD4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "BenchmarkMac/BenchmarkMac-Prefix.pch";
|
||||
INFOPLIST_FILE = "BenchmarkMac/BenchmarkMac-Info.plist";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
DCC29DFC14730AA9005E8FD4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "BenchmarkMac/BenchmarkMac-Prefix.pch";
|
||||
INFOPLIST_FILE = "BenchmarkMac/BenchmarkMac-Info.plist";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
DCC29DD614730AA9005E8FD4 /* Build configuration list for PBXProject "BenchmarkMac" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
DCC29DF814730AA9005E8FD4 /* Debug */,
|
||||
DCC29DF914730AA9005E8FD4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
DCC29DFA14730AA9005E8FD4 /* Build configuration list for PBXNativeTarget "BenchmarkMac" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
DCC29DFB14730AA9005E8FD4 /* Debug */,
|
||||
DCC29DFC14730AA9005E8FD4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = DCC29DD314730AA9005E8FD4 /* Project object */;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "DCC29DDB14730AA9005E8FD4"
|
||||
BuildableName = "BenchmarkMac.app"
|
||||
BlueprintName = "BenchmarkMac"
|
||||
ReferencedContainer = "container:BenchmarkMac.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "DCC29DDB14730AA9005E8FD4"
|
||||
BuildableName = "BenchmarkMac.app"
|
||||
BlueprintName = "BenchmarkMac"
|
||||
ReferencedContainer = "container:BenchmarkMac.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "DCC29DDB14730AA9005E8FD4"
|
||||
BuildableName = "BenchmarkMac.app"
|
||||
BlueprintName = "BenchmarkMac"
|
||||
ReferencedContainer = "container:BenchmarkMac.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "DCC29DDB14730AA9005E8FD4"
|
||||
BuildableName = "BenchmarkMac.app"
|
||||
BlueprintName = "BenchmarkMac"
|
||||
ReferencedContainer = "container:BenchmarkMac.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// BenchmarkMac
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface AppDelegate : NSObject <NSApplicationDelegate>
|
||||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
|
||||
@end
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// BenchmarkMac
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "PerformanceTesting.h"
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize window = _window;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||
{
|
||||
[PerformanceTesting startPerformanceTests];
|
||||
}
|
||||
|
||||
@end
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// BenchmarkMac-Prefix.pch
|
||||
// BenchmarkMac
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
//
|
||||
// Prefix header for all source files of the 'BenchmarkMac' target in the 'BenchmarkMac' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\paperw9840\paperh8400
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
|
||||
|
||||
\f0\b\fs24 \cf0 Engineering:
|
||||
\b0 \
|
||||
Some people\
|
||||
\
|
||||
|
||||
\b Human Interface Design:
|
||||
\b0 \
|
||||
Some other people\
|
||||
\
|
||||
|
||||
\b Testing:
|
||||
\b0 \
|
||||
Hopefully not nobody\
|
||||
\
|
||||
|
||||
\b Documentation:
|
||||
\b0 \
|
||||
Whoever\
|
||||
\
|
||||
|
||||
\b With special thanks to:
|
||||
\b0 \
|
||||
Mom\
|
||||
}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
Vendored
+4582
File diff suppressed because it is too large
Load Diff
+13
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// main.m
|
||||
// BenchmarkMac
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
return NSApplicationMain(argc, (const char **)argv);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
This Xcode project provides a benchmarking suite for performance testing on Mac OS X.
|
||||
|
||||
Details of the tests, as well as sample results, are provided on the Wiki:
|
||||
https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/Performance
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainWindow</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+302
@@ -0,0 +1,302 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7D8F9A217A109500B496D7 /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7D8F99217A109500B496D7 /* CocoaLumberjack.framework */; };
|
||||
1D3623260D0F684500981E51 /* BenchmarkIPhoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* BenchmarkIPhoneAppDelegate.m */; };
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
|
||||
288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
|
||||
2899E5220DE3E06400AC0155 /* BenchmarkIPhoneViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* BenchmarkIPhoneViewController.xib */; };
|
||||
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
|
||||
28D7ACF80DDB3853001CB0EB /* BenchmarkIPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* BenchmarkIPhoneViewController.m */; };
|
||||
DC3D2F391674073100DFAFAA /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DC3D2F381674073100DFAFAA /* Default-568h@2x.png */; };
|
||||
DC987BDF11928FD60020FF52 /* BaseNSLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DC987BD811928FD60020FF52 /* BaseNSLogging.m */; };
|
||||
DC987BE011928FD60020FF52 /* DynamicLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DC987BDA11928FD60020FF52 /* DynamicLogging.m */; };
|
||||
DC987BE111928FD60020FF52 /* PerformanceTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = DC987BDC11928FD60020FF52 /* PerformanceTesting.m */; };
|
||||
DC987BE211928FD60020FF52 /* StaticLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = DC987BDE11928FD60020FF52 /* StaticLogging.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0A7D8F99217A109500B496D7 /* CocoaLumberjack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CocoaLumberjack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D3623240D0F684500981E51 /* BenchmarkIPhoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BenchmarkIPhoneAppDelegate.h; sourceTree = "<group>"; };
|
||||
1D3623250D0F684500981E51 /* BenchmarkIPhoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BenchmarkIPhoneAppDelegate.m; sourceTree = "<group>"; };
|
||||
1D6058910D05DD3D006BFB54 /* BenchmarkIPhone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BenchmarkIPhone.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
2899E5210DE3E06400AC0155 /* BenchmarkIPhoneViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BenchmarkIPhoneViewController.xib; sourceTree = "<group>"; };
|
||||
28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
|
||||
28D7ACF60DDB3853001CB0EB /* BenchmarkIPhoneViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BenchmarkIPhoneViewController.h; sourceTree = "<group>"; };
|
||||
28D7ACF70DDB3853001CB0EB /* BenchmarkIPhoneViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BenchmarkIPhoneViewController.m; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
32CA4F630368D1EE00C91783 /* BenchmarkIPhone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BenchmarkIPhone_Prefix.pch; sourceTree = "<group>"; };
|
||||
43AF801D2174DF0D00C0D9DC /* Module-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Release.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF801E2174DF0D00C0D9DC /* Module-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF801F2174DF0D00C0D9DC /* Module-Shared.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Shared.xcconfig"; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* BenchmarkIPhone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "BenchmarkIPhone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
|
||||
DC3D2F381674073100DFAFAA /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
|
||||
DC987BD711928FD60020FF52 /* BaseNSLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BaseNSLogging.h; path = ../../../Benchmarking/BaseNSLogging.h; sourceTree = SOURCE_ROOT; };
|
||||
DC987BD811928FD60020FF52 /* BaseNSLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BaseNSLogging.m; path = ../../../Benchmarking/BaseNSLogging.m; sourceTree = SOURCE_ROOT; };
|
||||
DC987BD911928FD60020FF52 /* DynamicLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DynamicLogging.h; path = ../../../Benchmarking/DynamicLogging.h; sourceTree = SOURCE_ROOT; };
|
||||
DC987BDA11928FD60020FF52 /* DynamicLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DynamicLogging.m; path = ../../../Benchmarking/DynamicLogging.m; sourceTree = SOURCE_ROOT; };
|
||||
DC987BDB11928FD60020FF52 /* PerformanceTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PerformanceTesting.h; path = ../../../Benchmarking/PerformanceTesting.h; sourceTree = SOURCE_ROOT; };
|
||||
DC987BDC11928FD60020FF52 /* PerformanceTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PerformanceTesting.m; path = ../../../Benchmarking/PerformanceTesting.m; sourceTree = SOURCE_ROOT; };
|
||||
DC987BDD11928FD60020FF52 /* StaticLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StaticLogging.h; path = ../../../Benchmarking/StaticLogging.h; sourceTree = SOURCE_ROOT; };
|
||||
DC987BDE11928FD60020FF52 /* StaticLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StaticLogging.m; path = ../../../Benchmarking/StaticLogging.m; sourceTree = SOURCE_ROOT; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0A7D8F9A217A109500B496D7 /* CocoaLumberjack.framework in Frameworks */,
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
|
||||
288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D3623240D0F684500981E51 /* BenchmarkIPhoneAppDelegate.h */,
|
||||
1D3623250D0F684500981E51 /* BenchmarkIPhoneAppDelegate.m */,
|
||||
28D7ACF60DDB3853001CB0EB /* BenchmarkIPhoneViewController.h */,
|
||||
28D7ACF70DDB3853001CB0EB /* BenchmarkIPhoneViewController.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* BenchmarkIPhone.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF801C2174DF0D00C0D9DC /* Configs */,
|
||||
DC987BD611928FB50020FF52 /* Benchmarking */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32CA4F630368D1EE00C91783 /* BenchmarkIPhone_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2899E5210DE3E06400AC0155 /* BenchmarkIPhoneViewController.xib */,
|
||||
28AD733E0D9D9553002E5188 /* MainWindow.xib */,
|
||||
DC3D2F381674073100DFAFAA /* Default-568h@2x.png */,
|
||||
8D1107310486CEB800E47090 /* BenchmarkIPhone-Info.plist */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0A7D8F99217A109500B496D7 /* CocoaLumberjack.framework */,
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */,
|
||||
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
43AF801C2174DF0D00C0D9DC /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF801D2174DF0D00C0D9DC /* Module-Release.xcconfig */,
|
||||
43AF801E2174DF0D00C0D9DC /* Module-Debug.xcconfig */,
|
||||
43AF801F2174DF0D00C0D9DC /* Module-Shared.xcconfig */,
|
||||
);
|
||||
name = Configs;
|
||||
path = ../../../Configs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DC987BD611928FB50020FF52 /* Benchmarking */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DC987BDB11928FD60020FF52 /* PerformanceTesting.h */,
|
||||
DC987BDC11928FD60020FF52 /* PerformanceTesting.m */,
|
||||
DC987BD711928FD60020FF52 /* BaseNSLogging.h */,
|
||||
DC987BD811928FD60020FF52 /* BaseNSLogging.m */,
|
||||
DC987BDD11928FD60020FF52 /* StaticLogging.h */,
|
||||
DC987BDE11928FD60020FF52 /* StaticLogging.m */,
|
||||
DC987BD911928FD60020FF52 /* DynamicLogging.h */,
|
||||
DC987BDA11928FD60020FF52 /* DynamicLogging.m */,
|
||||
);
|
||||
name = Benchmarking;
|
||||
path = ../../../Benchmarking;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1D6058900D05DD3D006BFB54 /* BenchmarkIPhone */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BenchmarkIPhone" */;
|
||||
buildPhases = (
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = BenchmarkIPhone;
|
||||
productName = BenchmarkIPhone;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* BenchmarkIPhone.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0900;
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BenchmarkIPhone" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* BenchmarkIPhone */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */,
|
||||
2899E5220DE3E06400AC0155 /* BenchmarkIPhoneViewController.xib in Resources */,
|
||||
DC3D2F391674073100DFAFAA /* Default-568h@2x.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
|
||||
1D3623260D0F684500981E51 /* BenchmarkIPhoneAppDelegate.m in Sources */,
|
||||
28D7ACF80DDB3853001CB0EB /* BenchmarkIPhoneViewController.m in Sources */,
|
||||
DC987BDF11928FD60020FF52 /* BaseNSLogging.m in Sources */,
|
||||
DC987BE011928FD60020FF52 /* DynamicLogging.m in Sources */,
|
||||
DC987BE111928FD60020FF52 /* PerformanceTesting.m in Sources */,
|
||||
DC987BE211928FD60020FF52 /* StaticLogging.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = BenchmarkIPhone_Prefix.pch;
|
||||
INFOPLIST_FILE = "BenchmarkIPhone-Info.plist";
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = BenchmarkIPhone_Prefix.pch;
|
||||
INFOPLIST_FILE = "BenchmarkIPhone-Info.plist";
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF801E2174DF0D00C0D9DC /* Module-Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF801D2174DF0D00C0D9DC /* Module-Release.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "BenchmarkIPhone" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BenchmarkIPhone" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "BenchmarkIPhone.app"
|
||||
BlueprintName = "BenchmarkIPhone"
|
||||
ReferencedContainer = "container:BenchmarkIPhone.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "BenchmarkIPhone.app"
|
||||
BlueprintName = "BenchmarkIPhone"
|
||||
ReferencedContainer = "container:BenchmarkIPhone.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "BenchmarkIPhone.app"
|
||||
BlueprintName = "BenchmarkIPhone"
|
||||
ReferencedContainer = "container:BenchmarkIPhone.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
|
||||
BuildableName = "BenchmarkIPhone.app"
|
||||
BlueprintName = "BenchmarkIPhone"
|
||||
ReferencedContainer = "container:BenchmarkIPhone.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
Vendored
+151
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">784</int>
|
||||
<string key="IBDocument.SystemVersion">10A394</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">732</string>
|
||||
<string key="IBDocument.AppKitVersion">1027.1</string>
|
||||
<string key="IBDocument.HIToolboxVersion">430.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">60</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="6"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="372490531">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="843779117">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
</object>
|
||||
<object class="IBUIView" id="774585933">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrameSize">{320, 460}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC43NQA</bytes>
|
||||
<object class="NSColorSpace" key="NSCustomColorSpace">
|
||||
<int key="NSID">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="372490531"/>
|
||||
<reference key="destination" ref="774585933"/>
|
||||
</object>
|
||||
<int key="connectionID">7</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="372490531"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="843779117"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">6</int>
|
||||
<reference key="object" ref="774585933"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>6.IBEditorWindowLastContentRect</string>
|
||||
<string>6.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>BenchmarkIPhoneViewController</string>
|
||||
<string>UIResponder</string>
|
||||
<string>{{438, 347}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">7</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BenchmarkIPhoneViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/BenchmarkIPhoneViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">BenchmarkIPhone.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">3.1</string>
|
||||
</data>
|
||||
</archive>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// BenchmarkIPhone_Prefix.pch
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
//
|
||||
// Prefix header for all source files of the 'BenchmarkIPhone' target in the 'BenchmarkIPhone' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// BenchmarkIPhoneAppDelegate.h
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@class BenchmarkIPhoneViewController;
|
||||
|
||||
@interface BenchmarkIPhoneAppDelegate : NSObject <UIApplicationDelegate>
|
||||
{
|
||||
UIWindow *window;
|
||||
BenchmarkIPhoneViewController *viewController;
|
||||
}
|
||||
|
||||
@property (nonatomic, strong) IBOutlet UIWindow *window;
|
||||
@property (nonatomic, strong) IBOutlet BenchmarkIPhoneViewController *viewController;
|
||||
|
||||
@end
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// BenchmarkIPhoneAppDelegate.m
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "BenchmarkIPhoneAppDelegate.h"
|
||||
#import "BenchmarkIPhoneViewController.h"
|
||||
#import "PerformanceTesting.h"
|
||||
|
||||
@implementation BenchmarkIPhoneAppDelegate
|
||||
|
||||
@synthesize window;
|
||||
@synthesize viewController;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(UIApplication *)application
|
||||
{
|
||||
window.rootViewController = viewController;
|
||||
[window makeKeyAndVisible];
|
||||
|
||||
[PerformanceTesting startPerformanceTests];
|
||||
}
|
||||
|
||||
@end
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// BenchmarkIPhoneViewController.h
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface BenchmarkIPhoneViewController : UIViewController
|
||||
|
||||
@end
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// BenchmarkIPhoneViewController.m
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "BenchmarkIPhoneViewController.h"
|
||||
|
||||
@implementation BenchmarkIPhoneViewController
|
||||
|
||||
@end
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,219 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">784</int>
|
||||
<string key="IBDocument.SystemVersion">10A394</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">732</string>
|
||||
<string key="IBDocument.AppKitVersion">1027.1</string>
|
||||
<string key="IBDocument.HIToolboxVersion">430.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string key="NS.object.0">60</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="10"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBProxyObject" id="841351856">
|
||||
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
|
||||
</object>
|
||||
<object class="IBProxyObject" id="427554174">
|
||||
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
|
||||
</object>
|
||||
<object class="IBUICustomObject" id="664661524"/>
|
||||
<object class="IBUIViewController" id="943309135">
|
||||
<string key="IBUINibName">BenchmarkIPhoneViewController</string>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
</object>
|
||||
<object class="IBUIWindow" id="117978783">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">292</int>
|
||||
<string key="NSFrameSize">{320, 480}</string>
|
||||
<object class="NSColor" key="IBUIBackgroundColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MSAxIDEAA</bytes>
|
||||
</object>
|
||||
<bool key="IBUIOpaque">NO</bool>
|
||||
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
|
||||
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="841351856"/>
|
||||
<reference key="destination" ref="664661524"/>
|
||||
</object>
|
||||
<int key="connectionID">4</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">viewController</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="943309135"/>
|
||||
</object>
|
||||
<int key="connectionID">11</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBCocoaTouchOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="664661524"/>
|
||||
<reference key="destination" ref="117978783"/>
|
||||
</object>
|
||||
<int key="connectionID">14</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="841351856"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="664661524"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">BenchmarkIPhone App Delegate</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="427554174"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10</int>
|
||||
<reference key="object" ref="943309135"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">12</int>
|
||||
<reference key="object" ref="117978783"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.CustomClassName</string>
|
||||
<string>-2.CustomClassName</string>
|
||||
<string>10.CustomClassName</string>
|
||||
<string>10.IBEditorWindowLastContentRect</string>
|
||||
<string>10.IBPluginDependency</string>
|
||||
<string>12.IBEditorWindowLastContentRect</string>
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>3.CustomClassName</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>UIApplication</string>
|
||||
<string>UIResponder</string>
|
||||
<string>BenchmarkIPhoneViewController</string>
|
||||
<string>{{512, 351}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>{{525, 346}, {320, 480}}</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
<string>BenchmarkIPhoneAppDelegate</string>
|
||||
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">14</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BenchmarkIPhoneAppDelegate</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>viewController</string>
|
||||
<string>window</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>BenchmarkIPhoneViewController</string>
|
||||
<string>UIWindow</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/BenchmarkIPhoneAppDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BenchmarkIPhoneAppDelegate</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBUserSource</string>
|
||||
<string key="minorKey"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">BenchmarkIPhoneViewController</string>
|
||||
<string key="superclassName">UIViewController</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">Classes/BenchmarkIPhoneViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3100" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">BenchmarkIPhone.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<string key="IBCocoaTouchPluginVersion">3.1</string>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -0,0 +1,4 @@
|
||||
This Xcode project provides a benchmarking suite for performance testing on the iPhone.
|
||||
|
||||
Details of the tests, as well as sample results, are provided on the Wiki:
|
||||
https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/Performance
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// main.m
|
||||
// BenchmarkIPhone
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
@autoreleasepool {
|
||||
int retVal = UIApplicationMain(argc, argv, nil, nil);
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7D8FA0217A10A900B496D7 /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7D8F9F217A10A900B496D7 /* CocoaLumberjack.framework */; };
|
||||
E5EDB896186286BC002D0689 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5EDB895186286BC002D0689 /* Foundation.framework */; };
|
||||
E5EDB899186286BC002D0689 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E5EDB898186286BC002D0689 /* main.m */; };
|
||||
E5EDB89D186286BC002D0689 /* CLI.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = E5EDB89C186286BC002D0689 /* CLI.1 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
E5EDB890186286BC002D0689 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
E5EDB89D186286BC002D0689 /* CLI.1 in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0A7D8F9F217A10A900B496D7 /* CocoaLumberjack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CocoaLumberjack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
43AF80292174E3CB00C0D9DC /* Module-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Release.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF802A2174E3CB00C0D9DC /* Module-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF802B2174E3CB00C0D9DC /* Module-Shared.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Shared.xcconfig"; sourceTree = "<group>"; };
|
||||
E5EDB892186286BC002D0689 /* CLI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CLI; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E5EDB895186286BC002D0689 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
E5EDB898186286BC002D0689 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
E5EDB89B186286BC002D0689 /* CLI-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CLI-Prefix.pch"; sourceTree = "<group>"; };
|
||||
E5EDB89C186286BC002D0689 /* CLI.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = CLI.1; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
E5EDB88F186286BC002D0689 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0A7D8FA0217A10A900B496D7 /* CocoaLumberjack.framework in Frameworks */,
|
||||
E5EDB896186286BC002D0689 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
43AF80282174E3CB00C0D9DC /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80292174E3CB00C0D9DC /* Module-Release.xcconfig */,
|
||||
43AF802A2174E3CB00C0D9DC /* Module-Debug.xcconfig */,
|
||||
43AF802B2174E3CB00C0D9DC /* Module-Shared.xcconfig */,
|
||||
);
|
||||
name = Configs;
|
||||
path = ../../Configs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5EDB889186286BC002D0689 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80282174E3CB00C0D9DC /* Configs */,
|
||||
E5EDB897186286BC002D0689 /* CLI */,
|
||||
E5EDB894186286BC002D0689 /* Frameworks */,
|
||||
E5EDB893186286BC002D0689 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5EDB893186286BC002D0689 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5EDB892186286BC002D0689 /* CLI */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5EDB894186286BC002D0689 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0A7D8F9F217A10A900B496D7 /* CocoaLumberjack.framework */,
|
||||
E5EDB895186286BC002D0689 /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5EDB897186286BC002D0689 /* CLI */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5EDB898186286BC002D0689 /* main.m */,
|
||||
E5EDB89C186286BC002D0689 /* CLI.1 */,
|
||||
E5EDB89A186286BC002D0689 /* Supporting Files */,
|
||||
);
|
||||
path = CLI;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5EDB89A186286BC002D0689 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5EDB89B186286BC002D0689 /* CLI-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
E5EDB891186286BC002D0689 /* CLI */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = E5EDB8A0186286BC002D0689 /* Build configuration list for PBXNativeTarget "CLI" */;
|
||||
buildPhases = (
|
||||
E5EDB88E186286BC002D0689 /* Sources */,
|
||||
E5EDB88F186286BC002D0689 /* Frameworks */,
|
||||
E5EDB890186286BC002D0689 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = CLI;
|
||||
productName = kkcli;
|
||||
productReference = E5EDB892186286BC002D0689 /* CLI */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
E5EDB88A186286BC002D0689 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0900;
|
||||
ORGANIZATIONNAME = "";
|
||||
};
|
||||
buildConfigurationList = E5EDB88D186286BC002D0689 /* Build configuration list for PBXProject "CLI" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = E5EDB889186286BC002D0689;
|
||||
productRefGroup = E5EDB893186286BC002D0689 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
E5EDB891186286BC002D0689 /* CLI */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
E5EDB88E186286BC002D0689 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E5EDB899186286BC002D0689 /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
E5EDB89E186286BC002D0689 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF802A2174E3CB00C0D9DC /* Module-Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E5EDB89F186286BC002D0689 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF80292174E3CB00C0D9DC /* Module-Release.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E5EDB8A1186286BC002D0689 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CLI/CLI-Prefix.pch";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E5EDB8A2186286BC002D0689 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CLI/CLI-Prefix.pch";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
E5EDB88D186286BC002D0689 /* Build configuration list for PBXProject "CLI" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E5EDB89E186286BC002D0689 /* Debug */,
|
||||
E5EDB89F186286BC002D0689 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
E5EDB8A0186286BC002D0689 /* Build configuration list for PBXNativeTarget "CLI" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E5EDB8A1186286BC002D0689 /* Debug */,
|
||||
E5EDB8A2186286BC002D0689 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = E5EDB88A186286BC002D0689 /* Project object */;
|
||||
}
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+93
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5EDB891186286BC002D0689"
|
||||
BuildableName = "CLI"
|
||||
BlueprintName = "CLI"
|
||||
ReferencedContainer = "container:CLI.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5EDB891186286BC002D0689"
|
||||
BuildableName = "CLI"
|
||||
BlueprintName = "CLI"
|
||||
ReferencedContainer = "container:CLI.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5EDB891186286BC002D0689"
|
||||
BuildableName = "CLI"
|
||||
BlueprintName = "CLI"
|
||||
ReferencedContainer = "container:CLI.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5EDB891186286BC002D0689"
|
||||
BuildableName = "CLI"
|
||||
BlueprintName = "CLI"
|
||||
ReferencedContainer = "container:CLI.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// CLI-Prefix.pch
|
||||
// CLI
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
//
|
||||
// Prefix header
|
||||
//
|
||||
// The contents of this file are implicitly included at the beginning of every source file.
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
@@ -0,0 +1,79 @@
|
||||
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
|
||||
.\"See Also:
|
||||
.\"man mdoc.samples for a complete listing of options
|
||||
.\"man mdoc for the short list of editing options
|
||||
.\"/usr/share/misc/mdoc.template
|
||||
.Dd 2013/12/19 \" DATE
|
||||
.Dt CLI 1 \" Program name and manual section number
|
||||
.Os Darwin
|
||||
.Sh NAME \" Section Header - required - don't modify
|
||||
.Nm CLI,
|
||||
.\" The following lines are read in generating the apropos(man -k) database. Use only key
|
||||
.\" words here as the database is built based on the words here and in the .ND line.
|
||||
.Nm Other_name_for_same_program(),
|
||||
.Nm Yet another name for the same program.
|
||||
.\" Use .Nm macro to designate other names for the documented program.
|
||||
.Nd This line parsed for whatis database.
|
||||
.Sh SYNOPSIS \" Section Header - required - don't modify
|
||||
.Nm
|
||||
.Op Fl abcd \" [-abcd]
|
||||
.Op Fl a Ar path \" [-a path]
|
||||
.Op Ar file \" [file]
|
||||
.Op Ar \" [file ...]
|
||||
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
|
||||
arg2 ... \" Arguments
|
||||
.Sh DESCRIPTION \" Section Header - required - don't modify
|
||||
Use the .Nm macro to refer to your program throughout the man page like such:
|
||||
.Nm
|
||||
Underlining is accomplished with the .Ar macro like this:
|
||||
.Ar underlined text .
|
||||
.Pp \" Inserts a space
|
||||
A list of items with descriptions:
|
||||
.Bl -tag -width -indent \" Begins a tagged list
|
||||
.It item a \" Each item preceded by .It macro
|
||||
Description of item a
|
||||
.It item b
|
||||
Description of item b
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
A list of flags and their descriptions:
|
||||
.Bl -tag -width -indent \" Differs from above in tag removed
|
||||
.It Fl a \"-a flag as a list item
|
||||
Description of -a flag
|
||||
.It Fl b
|
||||
Description of -b flag
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
.\" .Sh ENVIRONMENT \" May not be needed
|
||||
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_1
|
||||
.\" Description of ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_2
|
||||
.\" Description of ENV_VAR_2
|
||||
.\" .El
|
||||
.Sh FILES \" File used or created by the topic of the man page
|
||||
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
|
||||
.It Pa /usr/share/file_name
|
||||
FILE_1 description
|
||||
.It Pa /Users/joeuser/Library/really_long_file_name
|
||||
FILE_2 description
|
||||
.El \" Ends the list
|
||||
.\" .Sh DIAGNOSTICS \" May not be needed
|
||||
.\" .Bl -diag
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .El
|
||||
.Sh SEE ALSO
|
||||
.\" List links in ascending order by section, alphabetically within a section.
|
||||
.\" Please do not reference files that do not exist without filing a bug report
|
||||
.Xr a 1 ,
|
||||
.Xr b 1 ,
|
||||
.Xr c 1 ,
|
||||
.Xr a 2 ,
|
||||
.Xr b 2 ,
|
||||
.Xr a 3 ,
|
||||
.Xr b 3
|
||||
.\" .Sh BUGS \" Document known, unremedied bugs
|
||||
.\" .Sh HISTORY \" Document history if command behaves in a unique manner
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// main.m
|
||||
// CLI
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
|
||||
|
||||
int main(int argc, const char * argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
|
||||
// Test
|
||||
DDTTYLogger * logger = [DDTTYLogger sharedInstance];
|
||||
logger.colorsEnabled = YES;
|
||||
[logger setForegroundColor:[DDColor colorWithCalibratedRed:26.0/255.0
|
||||
green:158.0/255.0
|
||||
blue:4.0/255.0
|
||||
alpha:1.0]
|
||||
backgroundColor:nil
|
||||
forFlag:DDLogFlagInfo];
|
||||
[DDLog addLogger:logger];
|
||||
DDLogInfo(@"Hello, World!");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+276
@@ -0,0 +1,276 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7D8F9E217A10A500B496D7 /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7D8F9D217A10A500B496D7 /* CocoaLumberjack.framework */; };
|
||||
E50619821A2EF295000F835A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E50619811A2EF295000F835A /* Main.storyboard */; };
|
||||
E5AE803B18DA83A400E0501F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5AE803A18DA83A400E0501F /* Foundation.framework */; };
|
||||
E5AE803D18DA83A400E0501F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5AE803C18DA83A400E0501F /* CoreGraphics.framework */; };
|
||||
E5AE803F18DA83A400E0501F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5AE803E18DA83A400E0501F /* UIKit.framework */; };
|
||||
E5AE804518DA83A400E0501F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E5AE804318DA83A400E0501F /* InfoPlist.strings */; };
|
||||
E5AE804718DA83A400E0501F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E5AE804618DA83A400E0501F /* main.m */; };
|
||||
E5AE804B18DA83A400E0501F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E5AE804A18DA83A400E0501F /* AppDelegate.m */; };
|
||||
E5AE805118DA83A400E0501F /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E5AE805018DA83A400E0501F /* ViewController.m */; };
|
||||
E5AE805318DA83A400E0501F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E5AE805218DA83A400E0501F /* Images.xcassets */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0A7D8F9D217A10A500B496D7 /* CocoaLumberjack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CocoaLumberjack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
43AF80252174E2F700C0D9DC /* Module-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Release.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF80262174E2F700C0D9DC /* Module-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF80272174E2F700C0D9DC /* Module-Shared.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Shared.xcconfig"; sourceTree = "<group>"; };
|
||||
E50619811A2EF295000F835A /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
E5AE803718DA83A400E0501F /* CaptureASL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CaptureASL.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E5AE803A18DA83A400E0501F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
E5AE803C18DA83A400E0501F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
E5AE803E18DA83A400E0501F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
E5AE804218DA83A400E0501F /* CaptureASL-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CaptureASL-Info.plist"; sourceTree = "<group>"; };
|
||||
E5AE804418DA83A400E0501F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
E5AE804618DA83A400E0501F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
E5AE804818DA83A400E0501F /* CaptureASL-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CaptureASL-Prefix.pch"; sourceTree = "<group>"; };
|
||||
E5AE804918DA83A400E0501F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
E5AE804A18DA83A400E0501F /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
E5AE804F18DA83A400E0501F /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
|
||||
E5AE805018DA83A400E0501F /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
|
||||
E5AE805218DA83A400E0501F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
E5AE805918DA83A400E0501F /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
E5AE803418DA83A400E0501F /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0A7D8F9E217A10A500B496D7 /* CocoaLumberjack.framework in Frameworks */,
|
||||
E5AE803D18DA83A400E0501F /* CoreGraphics.framework in Frameworks */,
|
||||
E5AE803F18DA83A400E0501F /* UIKit.framework in Frameworks */,
|
||||
E5AE803B18DA83A400E0501F /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
43AF80242174E2F700C0D9DC /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80252174E2F700C0D9DC /* Module-Release.xcconfig */,
|
||||
43AF80262174E2F700C0D9DC /* Module-Debug.xcconfig */,
|
||||
43AF80272174E2F700C0D9DC /* Module-Shared.xcconfig */,
|
||||
);
|
||||
name = Configs;
|
||||
path = ../../Configs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5AE802E18DA83A400E0501F = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF80242174E2F700C0D9DC /* Configs */,
|
||||
E5AE804018DA83A400E0501F /* CaptureASL */,
|
||||
E5AE803918DA83A400E0501F /* Frameworks */,
|
||||
E5AE803818DA83A400E0501F /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5AE803818DA83A400E0501F /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5AE803718DA83A400E0501F /* CaptureASL.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5AE803918DA83A400E0501F /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0A7D8F9D217A10A500B496D7 /* CocoaLumberjack.framework */,
|
||||
E5AE803A18DA83A400E0501F /* Foundation.framework */,
|
||||
E5AE803C18DA83A400E0501F /* CoreGraphics.framework */,
|
||||
E5AE803E18DA83A400E0501F /* UIKit.framework */,
|
||||
E5AE805918DA83A400E0501F /* XCTest.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5AE804018DA83A400E0501F /* CaptureASL */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5AE804918DA83A400E0501F /* AppDelegate.h */,
|
||||
E5AE804A18DA83A400E0501F /* AppDelegate.m */,
|
||||
E5AE804F18DA83A400E0501F /* ViewController.h */,
|
||||
E5AE805018DA83A400E0501F /* ViewController.m */,
|
||||
E50619811A2EF295000F835A /* Main.storyboard */,
|
||||
E5AE805218DA83A400E0501F /* Images.xcassets */,
|
||||
E5AE804118DA83A400E0501F /* Supporting Files */,
|
||||
);
|
||||
path = CaptureASL;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E5AE804118DA83A400E0501F /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E5AE804218DA83A400E0501F /* CaptureASL-Info.plist */,
|
||||
E5AE804318DA83A400E0501F /* InfoPlist.strings */,
|
||||
E5AE804618DA83A400E0501F /* main.m */,
|
||||
E5AE804818DA83A400E0501F /* CaptureASL-Prefix.pch */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
E5AE803618DA83A400E0501F /* CaptureASL */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = E5AE806918DA83A500E0501F /* Build configuration list for PBXNativeTarget "CaptureASL" */;
|
||||
buildPhases = (
|
||||
E5AE803318DA83A400E0501F /* Sources */,
|
||||
E5AE803418DA83A400E0501F /* Frameworks */,
|
||||
E5AE803518DA83A400E0501F /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = CaptureASL;
|
||||
productName = CaptureASL;
|
||||
productReference = E5AE803718DA83A400E0501F /* CaptureASL.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
E5AE802F18DA83A400E0501F /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0900;
|
||||
};
|
||||
buildConfigurationList = E5AE803218DA83A400E0501F /* Build configuration list for PBXProject "CaptureASL" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = E5AE802E18DA83A400E0501F;
|
||||
productRefGroup = E5AE803818DA83A400E0501F /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
E5AE803618DA83A400E0501F /* CaptureASL */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
E5AE803518DA83A400E0501F /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E50619821A2EF295000F835A /* Main.storyboard in Resources */,
|
||||
E5AE805318DA83A400E0501F /* Images.xcassets in Resources */,
|
||||
E5AE804518DA83A400E0501F /* InfoPlist.strings in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
E5AE803318DA83A400E0501F /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
E5AE805118DA83A400E0501F /* ViewController.m in Sources */,
|
||||
E5AE804B18DA83A400E0501F /* AppDelegate.m in Sources */,
|
||||
E5AE804718DA83A400E0501F /* main.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
E5AE804318DA83A400E0501F /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
E5AE804418DA83A400E0501F /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
E5AE806718DA83A500E0501F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF80262174E2F700C0D9DC /* Module-Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E5AE806818DA83A500E0501F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF80252174E2F700C0D9DC /* Module-Release.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E5AE806A18DA83A500E0501F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CaptureASL/CaptureASL-Prefix.pch";
|
||||
INFOPLIST_FILE = "CaptureASL/CaptureASL-Info.plist";
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
E5AE806B18DA83A500E0501F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CaptureASL/CaptureASL-Prefix.pch";
|
||||
INFOPLIST_FILE = "CaptureASL/CaptureASL-Info.plist";
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
E5AE803218DA83A400E0501F /* Build configuration list for PBXProject "CaptureASL" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E5AE806718DA83A500E0501F /* Debug */,
|
||||
E5AE806818DA83A500E0501F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
E5AE806918DA83A500E0501F /* Build configuration list for PBXNativeTarget "CaptureASL" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
E5AE806A18DA83A500E0501F /* Debug */,
|
||||
E5AE806B18DA83A500E0501F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = E5AE802F18DA83A400E0501F /* Project object */;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5AE803618DA83A400E0501F"
|
||||
BuildableName = "CaptureASL.app"
|
||||
BlueprintName = "CaptureASL"
|
||||
ReferencedContainer = "container:CaptureASL.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5AE805718DA83A400E0501F"
|
||||
BuildableName = "CaptureASLTests.xctest"
|
||||
BlueprintName = "CaptureASLTests"
|
||||
ReferencedContainer = "container:CaptureASL.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5AE803618DA83A400E0501F"
|
||||
BuildableName = "CaptureASL.app"
|
||||
BlueprintName = "CaptureASL"
|
||||
ReferencedContainer = "container:CaptureASL.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5AE803618DA83A400E0501F"
|
||||
BuildableName = "CaptureASL.app"
|
||||
BlueprintName = "CaptureASL"
|
||||
ReferencedContainer = "container:CaptureASL.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E5AE803618DA83A400E0501F"
|
||||
BuildableName = "CaptureASL.app"
|
||||
BlueprintName = "CaptureASL"
|
||||
ReferencedContainer = "container:CaptureASL.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
||||
|
||||
@property (strong, nonatomic) UIWindow *window;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
@interface SimpleFormatter : NSObject <DDLogFormatter>
|
||||
|
||||
@end
|
||||
|
||||
@implementation SimpleFormatter
|
||||
|
||||
- (NSString *)formatLogMessage:(DDLogMessage *)logMessage
|
||||
{
|
||||
return [NSString stringWithFormat:@" Captured: %@", logMessage->_message];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
DDTTYLogger.sharedInstance.logFormatter = [SimpleFormatter new];
|
||||
[DDLog addLogger:DDTTYLogger.sharedInstance];
|
||||
[DDLog addLogger:DDASLLogger.sharedInstance];
|
||||
|
||||
[DDASLLogCapture start];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// CaptureASL-Prefix.pch
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
//
|
||||
// Prefix header
|
||||
//
|
||||
// The contents of this file are implicitly included at the beginning of every source file.
|
||||
//
|
||||
|
||||
#import <Availability.h>
|
||||
|
||||
#ifndef __IPHONE_5_0
|
||||
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6254" systemVersion="14B25" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="vXZ-lx-hvc">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<development version="5100" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6247"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="ufC-wZ-h7g">
|
||||
<objects>
|
||||
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="OQh-Gf-KC3">
|
||||
<rect key="frame" x="32" y="99" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="NSLog(@"ASL test message #count")">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="aIM-Nh-oJG"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="WMs-oa-AQ1">
|
||||
<rect key="frame" x="32" y="164" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_EMERG)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="DIq-VT-0bb"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="qhW-P0-r1b">
|
||||
<rect key="frame" x="32" y="202" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_ALERT)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="lSC-BX-BKJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="oW1-92-Vhj">
|
||||
<rect key="frame" x="32" y="240" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_CRIT)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="FkE-L6-kbI"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="3" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="l4x-pf-1E4">
|
||||
<rect key="frame" x="32" y="278" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_ERR)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="kVB-nm-p9V"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="4" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="g4l-S3-KOi">
|
||||
<rect key="frame" x="32" y="316" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_WARNING)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="GhE-yr-uZg"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="ggg-qd-RaF">
|
||||
<rect key="frame" x="32" y="354" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_NOTICE)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="0w9-hq-tbd"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="6" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="L82-yP-unm">
|
||||
<rect key="frame" x="32" y="392" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_INFO)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="hKL-Do-QGE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="7" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="VO7-m5-Wmc">
|
||||
<rect key="frame" x="32" y="430" width="256" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<state key="normal" title="asl_log(ASL_LEVEL_DEBUG)">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="asl_log:" destination="vXZ-lx-hvc" eventType="touchUpInside" id="MiX-oQ-9UW"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// ViewController.h
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ViewController : UIViewController
|
||||
|
||||
- (IBAction)log:(id)sender;
|
||||
- (IBAction)asl_log:(UIButton *)sender;
|
||||
|
||||
@end
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// ViewController.m
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "ViewController.h"
|
||||
#import <asl.h>
|
||||
|
||||
@implementation ViewController
|
||||
{
|
||||
int count;
|
||||
aslclient client;
|
||||
}
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
[super awakeFromNib];
|
||||
|
||||
count = 0;
|
||||
client = asl_open(NULL, "CocoaLumberjack.CaptureASL", 0);
|
||||
}
|
||||
|
||||
- (IBAction)log:(id)sender
|
||||
{
|
||||
NSLog(@"ASL test message %d", count++);
|
||||
}
|
||||
|
||||
- (IBAction)asl_log:(UIButton *)sender
|
||||
{
|
||||
char *level = NULL;
|
||||
switch (sender.tag)
|
||||
{
|
||||
case ASL_LEVEL_EMERG : level = "ASL_LEVEL_EMERG"; break;
|
||||
case ASL_LEVEL_ALERT : level = "ASL_LEVEL_ALERT"; break;
|
||||
case ASL_LEVEL_CRIT : level = "ASL_LEVEL_CRIT"; break;
|
||||
case ASL_LEVEL_ERR : level = "ASL_LEVEL_ERR"; break;
|
||||
case ASL_LEVEL_WARNING : level = "ASL_LEVEL_WARNING"; break;
|
||||
case ASL_LEVEL_NOTICE : level = "ASL_LEVEL_NOTICE"; break;
|
||||
case ASL_LEVEL_INFO : level = "ASL_LEVEL_INFO"; break;
|
||||
case ASL_LEVEL_DEBUG : level = "ASL_LEVEL_DEBUG"; break;
|
||||
}
|
||||
asl_log(client, NULL, (int)sender.tag, "%s test message %d", level, count++);
|
||||
}
|
||||
|
||||
@end
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// main.m
|
||||
// CaptureASL
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Vendored
+307
@@ -0,0 +1,307 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0A7D8FA2217A10AC00B496D7 /* CocoaLumberjack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A7D8FA1217A10AC00B496D7 /* CocoaLumberjack.framework */; };
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
256AC3DA0F4B6AC300CF3369 /* ContextFilterAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* ContextFilterAppDelegate.m */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
DC2E3347129ADC68009F096E /* MyContextFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = DC2E3346129ADC68009F096E /* MyContextFilter.m */; };
|
||||
DC2E334A129ADCE0009F096E /* ThirdPartyFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = DC2E3349129ADCE0009F096E /* ThirdPartyFramework.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
0A7D8FA1217A10AC00B496D7 /* CocoaLumberjack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CocoaLumberjack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
256AC3D80F4B6AC300CF3369 /* ContextFilterAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextFilterAppDelegate.h; sourceTree = "<group>"; };
|
||||
256AC3D90F4B6AC300CF3369 /* ContextFilterAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContextFilterAppDelegate.m; sourceTree = "<group>"; };
|
||||
256AC3F00F4B6AF500CF3369 /* ContextFilter_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextFilter_Prefix.pch; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
43AF802D2174E44800C0D9DC /* Module-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Release.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF802E2174E44800C0D9DC /* Module-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||
43AF802F2174E44800C0D9DC /* Module-Shared.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Module-Shared.xcconfig"; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* ContextFilter-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "ContextFilter-Info.plist"; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* ContextFilter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ContextFilter.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DC2E3345129ADC68009F096E /* MyContextFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyContextFilter.h; sourceTree = "<group>"; };
|
||||
DC2E3346129ADC68009F096E /* MyContextFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyContextFilter.m; sourceTree = "<group>"; };
|
||||
DC2E3348129ADCE0009F096E /* ThirdPartyFramework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThirdPartyFramework.h; sourceTree = "<group>"; };
|
||||
DC2E3349129ADCE0009F096E /* ThirdPartyFramework.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThirdPartyFramework.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0A7D8FA2217A10AC00B496D7 /* CocoaLumberjack.framework in Frameworks */,
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
256AC3D80F4B6AC300CF3369 /* ContextFilterAppDelegate.h */,
|
||||
256AC3D90F4B6AC300CF3369 /* ContextFilterAppDelegate.m */,
|
||||
DC2E3348129ADCE0009F096E /* ThirdPartyFramework.h */,
|
||||
DC2E3349129ADCE0009F096E /* ThirdPartyFramework.m */,
|
||||
DC2E3345129ADC68009F096E /* MyContextFilter.h */,
|
||||
DC2E3346129ADC68009F096E /* MyContextFilter.m */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107320486CEB800E47090 /* ContextFilter.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* ContextFilter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF802C2174E44800C0D9DC /* Configs */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = ContextFilter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
256AC3F00F4B6AF500CF3369 /* ContextFilter_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107310486CEB800E47090 /* ContextFilter-Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0A7D8FA1217A10AC00B496D7 /* CocoaLumberjack.framework */,
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
43AF802C2174E44800C0D9DC /* Configs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43AF802D2174E44800C0D9DC /* Module-Release.xcconfig */,
|
||||
43AF802E2174E44800C0D9DC /* Module-Debug.xcconfig */,
|
||||
43AF802F2174E44800C0D9DC /* Module-Shared.xcconfig */,
|
||||
);
|
||||
name = Configs;
|
||||
path = ../../Configs;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D1107260486CEB800E47090 /* ContextFilter */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "ContextFilter" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = ContextFilter;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = ContextFilter;
|
||||
productReference = 8D1107320486CEB800E47090 /* ContextFilter.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0900;
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ContextFilter" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* ContextFilter */;
|
||||
productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* ContextFilter */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
256AC3DA0F4B6AC300CF3369 /* ContextFilterAppDelegate.m in Sources */,
|
||||
DC2E3347129ADC68009F096E /* MyContextFilter.m in Sources */,
|
||||
DC2E334A129ADCE0009F096E /* ThirdPartyFramework.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C165DFE840E0CC02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
1DDD58150DA1D0A300B32029 /* English */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
C01FCF4B08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = ContextFilter_Prefix.pch;
|
||||
INFOPLIST_FILE = "ContextFilter-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = ContextFilter_Prefix.pch;
|
||||
INFOPLIST_FILE = "ContextFilter-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
SUPPORTED_PLATFORMS = macosx;
|
||||
TARGETED_DEVICE_FAMILY = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF802E2174E44800C0D9DC /* Module-Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 43AF802D2174E44800C0D9DC /* Module-Release.xcconfig */;
|
||||
buildSettings = {
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "ContextFilter" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ContextFilter" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>FILEHEADER</key>
|
||||
<string>
|
||||
// ___FILENAME___
|
||||
// ___TARGETNAME___
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//</string>
|
||||
</dict>
|
||||
</plist>
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8D1107260486CEB800E47090"
|
||||
BuildableName = "ContextFilter.app"
|
||||
BlueprintName = "ContextFilter"
|
||||
ReferencedContainer = "container:ContextFilter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8D1107260486CEB800E47090"
|
||||
BuildableName = "ContextFilter.app"
|
||||
BlueprintName = "ContextFilter"
|
||||
ReferencedContainer = "container:ContextFilter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8D1107260486CEB800E47090"
|
||||
BuildableName = "ContextFilter.app"
|
||||
BlueprintName = "ContextFilter"
|
||||
ReferencedContainer = "container:ContextFilter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8D1107260486CEB800E47090"
|
||||
BuildableName = "ContextFilter.app"
|
||||
BlueprintName = "ContextFilter"
|
||||
ReferencedContainer = "container:ContextFilter.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// ContextFilterAppDelegate.h
|
||||
// ContextFilter
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface ContextFilterAppDelegate : NSObject <NSApplicationDelegate> {
|
||||
NSWindow *__unsafe_unretained window;
|
||||
}
|
||||
|
||||
@property (unsafe_unretained) IBOutlet NSWindow *window;
|
||||
|
||||
@end
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// ContextFilterAppDelegate.m
|
||||
// ContextFilter
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import "ContextFilterAppDelegate.h"
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
#import "MyContextFilter.h"
|
||||
#import "ThirdPartyFramework.h"
|
||||
|
||||
// Log levels: off, error, warn, info, verbose
|
||||
static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
|
||||
|
||||
@implementation ContextFilterAppDelegate
|
||||
@synthesize window;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||
{
|
||||
// Our application adopts a "third party framework" which also uses the lumberjack framework.
|
||||
// We love this because it greatly improves our ability to observe, debug, and diagnose problems!
|
||||
//
|
||||
// Now sometimes we want to see the third party framework log messages in our Xcode console.
|
||||
// And sometimes we don't (for whatever reason).
|
||||
//
|
||||
// We can accomplish this with the use of log message contexts.
|
||||
// Each log message has an associated context.
|
||||
// The context itself is simply an integer, and the default context is zero.
|
||||
// However, third party frameworks that employ lumberjack will likely use a custom non-zero context.
|
||||
//
|
||||
// For example, the CocoaHTTPServer project defines it's own internal log statments:
|
||||
//
|
||||
// HTTPLogWarn(@"File not found - %@", filePath);
|
||||
//
|
||||
// As part of its logging setup, it defines its own custom logging context:
|
||||
//
|
||||
// #define HTTP_LOG_CONTEXT 80
|
||||
//
|
||||
// And each HTTPLog message uses this HTTP_LOG_CONTEXT instead of the default context.
|
||||
// This means that we can tell if log messages are coming from our code or from the framework.
|
||||
// We're going to tap into this ability to filter out log messages from our "third party framework".
|
||||
|
||||
|
||||
// We want all log messages (from our code or the third party framework) to show up in the Xcode console.
|
||||
|
||||
[DDLog addLogger:[DDTTYLogger sharedInstance]];
|
||||
|
||||
// If we want to filter log messages from the third party framework, we can do this:
|
||||
|
||||
MyContextFilter *filter = [[MyContextFilter alloc] init];
|
||||
|
||||
[[DDTTYLogger sharedInstance] setLogFormatter:filter];
|
||||
|
||||
// Now start up a timer to create some fake log messages for this example
|
||||
|
||||
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(fire:) userInfo:nil repeats:YES];
|
||||
|
||||
// Start the third party framework,
|
||||
// which will create a similar fake timer.
|
||||
|
||||
[ThirdPartyFramework start];
|
||||
}
|
||||
|
||||
- (void)fire:(NSTimer *)timer
|
||||
{
|
||||
DDLogVerbose(@"Log message from our code");
|
||||
}
|
||||
|
||||
@end
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// ContextFilter_Prefix.pch
|
||||
// ContextFilter
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
//
|
||||
// Prefix header for all source files of the 'ContextFilter' target in the 'ContextFilter' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
+4119
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// MyContextFilter.h
|
||||
// ContextFilter
|
||||
//
|
||||
// CocoaLumberjack Demos
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CocoaLumberjack/CocoaLumberjack.h>
|
||||
|
||||
@interface MyContextFilter : NSObject <DDLogFormatter>
|
||||
|
||||
@end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user