Showing preview only (238K chars total). Download the full file or copy to clipboard to get everything.
Repository: konoma/fps-counter
Branch: master
Commit: 0f96db18a052
Files: 62
Total size: 218.4 KB
Directory structure:
gitextract_5vekfhj0/
├── .gitignore
├── .jazzy.yaml
├── .swift-version
├── .swiftlint.yml
├── .travis.yml
├── Documentation/
│ ├── Classes/
│ │ └── FPSCounter.html
│ ├── Classes.html
│ ├── Protocols/
│ │ └── FPSCounterDelegate.html
│ ├── Protocols.html
│ ├── css/
│ │ ├── highlight.css
│ │ └── jazzy.css
│ ├── docsets/
│ │ ├── .docset/
│ │ │ └── Contents/
│ │ │ ├── Info.plist
│ │ │ └── Resources/
│ │ │ ├── Documents/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── FPSCounter.html
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Protocols/
│ │ │ │ │ └── FPSCounterDelegate.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── css/
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── index.html
│ │ │ │ ├── js/
│ │ │ │ │ └── jazzy.js
│ │ │ │ └── undocumented.txt
│ │ │ └── docSet.dsidx
│ │ ├── .tgz
│ │ ├── FPSCounter.docset/
│ │ │ └── Contents/
│ │ │ ├── Info.plist
│ │ │ └── Resources/
│ │ │ ├── Documents/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── FPSCounter.html
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Protocols/
│ │ │ │ │ └── FPSCounterDelegate.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── css/
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── index.html
│ │ │ │ ├── js/
│ │ │ │ │ └── jazzy.js
│ │ │ │ ├── search.json
│ │ │ │ ├── undocumented.json
│ │ │ │ └── undocumented.txt
│ │ │ └── docSet.dsidx
│ │ └── FPSCounter.tgz
│ ├── index.html
│ ├── js/
│ │ └── jazzy.js
│ ├── search.json
│ ├── undocumented.json
│ └── undocumented.txt
├── FPSCounter.podspec
├── FPSCounter.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata/
│ └── xcschemes/
│ ├── FPSCounter.xcscheme
│ └── Sample App.xcscheme
├── LICENSE
├── Package.swift
├── Readme.md
├── SampleApp/
│ ├── AppDelegate.swift
│ ├── Assets.xcassets/
│ │ └── AppIcon.appiconset/
│ │ └── Contents.json
│ ├── Base.lproj/
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── TableViewController.swift
└── Sources/
├── FPSCounter.h
├── FPSCounter.swift
├── FPSStatusBarViewController.swift
├── FPSStatusBarWindow.swift
└── Info.plist
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
FPSCounter.xcodeproj/xcuserdata
build
.DS_Store
/FPSCounter.xcodeproj/project.xcworkspace/xcuserdata
================================================
FILE: .jazzy.yaml
================================================
swift_version: 5.0.0
output: Documentation
================================================
FILE: .swift-version
================================================
5.0
================================================
FILE: .swiftlint.yml
================================================
line_length: 140
disabled_rules:
- closing_brace
- vertical_whitespace
included:
- Sources
================================================
FILE: .travis.yml
================================================
os: osx
osx_image: xcode10.2
language: objective-c
before_script:
- pod lib lint --allow-warnings
- swiftlint
script:
- xcodebuild -scheme FPSCounter -destination "platform=iOS Simulator,name=iPhone 8,OS=12.0"
================================================
FILE: Documentation/Classes/FPSCounter.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounter Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a title="FPSCounter Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">FPSCounter Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounter Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounter</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>FPSCounter.showInStatusBar()</code> convenience method.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<div class="task-name-container">
<a name="/Initialization"></a>
<a name="//apple_ref/swift/Section/Initialization" class="dashAnchor"></a>
<a href="#/Initialization">
<h3 class="section-name">Initialization</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)init"></a>
<a name="//apple_ref/swift/Method/init()" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)init">init()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Create a new FPSCounter.</p>
<p>To start receiving FPS updates you need to start tracking with the
<code><a href="../Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:">startTracking(inRunLoop:mode:)</a></code> method.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">override</span> <span class="nf">init</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc"></a>
<a name="//apple_ref/swift/Method/deinit" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc">deinit</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Undocumented</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">deinit</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Configuration"></a>
<a name="//apple_ref/swift/Section/Configuration" class="dashAnchor"></a>
<a href="#/Configuration">
<h3 class="section-name">Configuration</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp">delegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate that should receive FPS updates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay"></a>
<a name="//apple_ref/swift/Property/notificationDelay" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay">notificationDelay</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Delay between FPS updates. Longer delays mean more averaged FPS numbers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="k">var</span> <span class="nv">notificationDelay</span><span class="p">:</span> <span class="kt">TimeInterval</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Tracking"></a>
<a name="//apple_ref/swift/Section/Tracking" class="dashAnchor"></a>
<a href="#/Tracking">
<h3 class="section-name">Tracking</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:"></a>
<a name="//apple_ref/swift/Method/startTracking(inRunLoop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:">startTracking(inRunLoop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Start tracking FPS updates.</p>
<p>You can specify wich runloop to use for tracking, as well as the runloop modes.
Usually you’ll want the main runloop (default), and either the common run loop modes
(default), or the tracking mode (<code>RunLoop.Mode.tracking</code>).</p>
<p>When the counter is already tracking, it’s stopped first.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="kd">func</span> <span class="nf">startTracking</span><span class="p">(</span><span class="n">inRunLoop</span> <span class="nv">runloop</span><span class="p">:</span> <span class="kt">RunLoop</span> <span class="o">=</span> <span class="o">.</span><span class="n">main</span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt">RunLoop</span><span class="o">.</span><span class="kt">Mode</span> <span class="o">=</span> <span class="o">.</span><span class="n">common</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The runloop to start tracking in</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The mode(s) to track in the runloop</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking"></a>
<a name="//apple_ref/swift/Method/stopTracking()" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking">stopTracking()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Stop tracking FPS updates.</p>
<p>This method does nothing if the counter is not currently tracking.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="kd">func</span> <span class="nf">stopTracking</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Show%20FPS%20in%20the%20status%20bar"></a>
<a name="//apple_ref/swift/Section/Show FPS in the status bar" class="dashAnchor"></a>
<a href="#/Show%20FPS%20in%20the%20status%20bar">
<h3 class="section-name">Show FPS in the status bar</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:"></a>
<a name="//apple_ref/swift/Method/showInStatusBar(application:runloop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:">showInStatusBar(application:runloop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Add a label in the status bar that shows the applications current FPS.</p>
<div class="aside aside-note">
<p class="aside-title">Note</p>
<p>Only do this in debug builds. Apple may reject your app if it covers the status bar.</p>
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="kd">func</span> <span class="nf">showInStatusBar</span><span class="p">(</span>
<span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span> <span class="o">=</span> <span class="o">.</span><span class="n">shared</span><span class="p">,</span>
<span class="nv">runloop</span><span class="p">:</span> <span class="kt">RunLoop</span> <span class="o">=</span> <span class="o">.</span><span class="n">main</span><span class="p">,</span>
<span class="nv">mode</span><span class="p">:</span> <span class="kt">RunLoop</span><span class="o">.</span><span class="kt">Mode</span> <span class="o">=</span> <span class="o">.</span><span class="n">common</span>
<span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>application</em>
</code>
</td>
<td>
<div>
<p>The <code>UIApplication</code> to show the FPS for</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The <code>NSRunLoop</code> to use when tracking FPS. Default is the main run loop</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The run loop mode to use when tracking. Default uses <code>RunLoop.Mode.common</code></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide"></a>
<a name="//apple_ref/swift/Method/hide()" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide">hide()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Removes the label that shows the current FPS from the status bar.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="kd">func</span> <span class="nf">hide</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible"></a>
<a name="//apple_ref/swift/Variable/isVisible" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible">isVisible</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns wether the FPS counter is currently visible or not.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="k">var</span> <span class="nv">isVisible</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/Classes.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter"></a>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter">FPSCounter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>FPSCounter.showInStatusBar()</code> convenience method.</p>
<a href="Classes/FPSCounter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/Protocols/FPSCounterDelegate.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounterDelegate Protocol Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a title="FPSCounterDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">FPSCounter Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounterDelegate Protocol Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounterDelegate</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a <code><a href="../Classes/FPSCounter.html">FPSCounter</a></code>.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF"></a>
<a name="//apple_ref/swift/Method/fpsCounter(_:didUpdateFramesPerSecond:)" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF">fpsCounter(_:didUpdateFramesPerSecond:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called in regular intervals while the counter is tracking FPS.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">fpsCounter</span><span class="p">(</span><span class="n">_</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt"><a href="../Classes/FPSCounter.html">FPSCounter</a></span><span class="p">,</span> <span class="n">didUpdateFramesPerSecond</span> <span class="nv">fps</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>counter</em>
</code>
</td>
<td>
<div>
<p>The FPSCounter that sent the update</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>fps</em>
</code>
</td>
<td>
<div>
<p>The current FPS of the application</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/Protocols.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Protocols Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
<a title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
Protocols Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Protocols</h1>
<p>The following protocols are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounter0A8DelegateP"></a>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounter0A8DelegateP">FPSCounterDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a <code><a href="Classes/FPSCounter.html">FPSCounter</a></code>.</p>
<a href="Protocols/FPSCounterDelegate.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/css/highlight.css
================================================
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
================================================
FILE: Documentation/css/jazzy.css
================================================
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none;
white-space: nowrap; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 20px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.main-content section .heading:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token, .item .direct-link {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .discouraged {
text-decoration: line-through; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning, .aside-deprecated, .aside-unavailable {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: relative;
top: 10px;
bottom: 0px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
================================================
FILE: Documentation/docsets/.docset/Contents/Info.plist
================================================
<?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>CFBundleIdentifier</key>
<string>com.jazzy.</string>
<key>CFBundleName</key>
<string></string>
<key>DocSetPlatformFamily</key>
<string>jazzy</string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>isJavaScriptEnabled</key>
<true/>
<key>DashDocSetFamily</key>
<string>dashtoc</string>
</dict>
</plist>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/Classes/FPSCounter.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounter Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a title="FPSCounter Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounter Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounter</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span><span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>showInStatusBar(_:)</code> convenience class function.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<div class="task-name-container">
<a name="/Initialization"></a>
<a name="//apple_ref/swift/Section/Initialization" class="dashAnchor"></a>
<a href="#/Initialization">
<h3 class="section-name">Initialization</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:FC10FPSCounter10FPSCountercFMS0_FT_S0_"></a>
<a name="//apple_ref/swift/Method/init()" class="dashAnchor"></a>
<a class="token" href="#/s:FC10FPSCounter10FPSCountercFMS0_FT_S0_">init()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Create a new FPSCounter.</p>
<p>To start receiving FPS updates you need to start tracking with the
<code><a href="../Classes/FPSCounter.html#/s:FC10FPSCounter10FPSCounter13startTrackingFS0_FT9inRunLoopCSo9NSRunLoop4modeSS_T_">startTracking(inRunLoop:mode:)</a></code> method.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">override</span> <span class="nf">init</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Configuration"></a>
<a name="//apple_ref/swift/Section/Configuration" class="dashAnchor"></a>
<a href="#/Configuration">
<h3 class="section-name">Configuration</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:vC10FPSCounter10FPSCounter8delegateXwGSqPS_18FPSCounterDelegate__"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:vC10FPSCounter10FPSCounter8delegateXwGSqPS_18FPSCounterDelegate__">delegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate that should receive FPS updates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt">FPSCounterDelegate</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC10FPSCounter10FPSCounter17notificationDelaySd"></a>
<a name="//apple_ref/swift/Property/notificationDelay" class="dashAnchor"></a>
<a class="token" href="#/s:vC10FPSCounter10FPSCounter17notificationDelaySd">notificationDelay</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Delay between FPS updates. Longer delays mean more averaged FPS numbers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">notificationDelay</span><span class="p">:</span> <span class="kt">NSTimeInterval</span> <span class="o">=</span> <span class="mf">1.0</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Tracking"></a>
<a name="//apple_ref/swift/Section/Tracking" class="dashAnchor"></a>
<a href="#/Tracking">
<h3 class="section-name">Tracking</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:FC10FPSCounter10FPSCounter13startTrackingFS0_FT9inRunLoopCSo9NSRunLoop4modeSS_T_"></a>
<a name="//apple_ref/swift/Method/startTracking(inRunLoop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC10FPSCounter10FPSCounter13startTrackingFS0_FT9inRunLoopCSo9NSRunLoop4modeSS_T_">startTracking(inRunLoop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Start tracking FPS updates.</p>
<p>You can specify wich runloop to use for tracking, as well as the runloop modes.
Usually you’ll want the main runloop (default), and either the common run loop modes
(default), or the tracking mode (<code>UITrackingRunLoopMode</code>).</p>
<p>When the counter is already tracking, it’s stopped first.</p>
<ul>
<li>Parameters:
<ul>
<li>runloop: The runloop to start tracking in</li>
<li>mode: The mode(s) to track in the runloop</li>
</ul></li>
</ul>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">startTracking</span><span class="p">(</span><span class="n">inRunLoop</span> <span class="nv">runloop</span><span class="p">:</span> <span class="kt">NSRunLoop</span> <span class="o">=</span> <span class="kt">NSRunLoop</span><span class="o">.</span><span class="nf">mainRunLoop</span><span class="p">(),</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kt">NSRunLoopCommonModes</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The runloop to start tracking in</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The mode(s) to track in the runloop</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC10FPSCounter10FPSCounter12stopTrackingFS0_FT_T_"></a>
<a name="//apple_ref/swift/Method/stopTracking()" class="dashAnchor"></a>
<a class="token" href="#/s:FC10FPSCounter10FPSCounter12stopTrackingFS0_FT_T_">stopTracking()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Stop tracking FPS updates.</p>
<p>This method does nothing if the counter is not currently tracking.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">stopTracking</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Show%20FPS%20in%20the%20status%20bar"></a>
<a name="//apple_ref/swift/Section/Show FPS in the status bar" class="dashAnchor"></a>
<a href="#/Show%20FPS%20in%20the%20status%20bar">
<h3 class="section-name">Show FPS in the status bar</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:ZFC10FPSCounter10FPSCounter15showInStatusBarFMS0_FTCSo13UIApplication7runloopGSqCSo9NSRunLoop_4modeGSqSS__T_"></a>
<a name="//apple_ref/swift/Method/showInStatusBar(_:runloop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:ZFC10FPSCounter10FPSCounter15showInStatusBarFMS0_FTCSo13UIApplication7runloopGSqCSo9NSRunLoop_4modeGSqSS__T_">showInStatusBar(_:runloop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Add a label in the status bar that shows the applications current FPS.</p>
<div class="aside aside-note">
<p class="aside-title">Note</p>
<p>Only do this in debug builds. Apple may reject your app if it covers the status bar.</p>
</div>
<p><li><p>Parameters:</p></p>
<p><ul>
<li>application: The <code>UIApplication</code> to show the FPS for</li>
<li>runloop: The <code>NSRunLoop</code> to use when tracking FPS or <code>nil</code> (then it uses the main run loop)</li>
<li>mode: The run loop mode to use when tracking. If <code>nil</code> it uses <code>NSRunLoopCommonModes</code></li>
</ul></li></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">showInStatusBar</span><span class="p">(</span><span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span><span class="p">,</span> <span class="nv">runloop</span><span class="p">:</span> <span class="kt">NSRunLoop</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>application</em>
</code>
</td>
<td>
<div>
<p>The <code>UIApplication</code> to show the FPS for</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The <code>NSRunLoop</code> to use when tracking FPS or <code>nil</code> (then it uses the main run loop)</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The run loop mode to use when tracking. If <code>nil</code> it uses <code>NSRunLoopCommonModes</code></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2016 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2016-03-04)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/Classes.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:C10FPSCounter10FPSCounter"></a>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a class="token" href="#/s:C10FPSCounter10FPSCounter">FPSCounter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>showInStatusBar(_:)</code> convenience class function.</p>
<a href="Classes/FPSCounter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span><span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2016 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2016-03-04)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/Protocols/FPSCounterDelegate.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounterDelegate Protocol Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a title="FPSCounterDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html"> Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounterDelegate Protocol Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounterDelegate</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span><span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a FPSCounter.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:FP10FPSCounter18FPSCounterDelegate10fpsCounteruRq_S0__Fq_FTCS_10FPSCounter24didUpdateFramesPerSecondSi_T_"></a>
<a name="//apple_ref/swift/Method/fpsCounter(_:didUpdateFramesPerSecond:)" class="dashAnchor"></a>
<a class="token" href="#/s:FP10FPSCounter18FPSCounterDelegate10fpsCounteruRq_S0__Fq_FTCS_10FPSCounter24didUpdateFramesPerSecondSi_T_">fpsCounter(_:didUpdateFramesPerSecond:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called in regular intervals while the counter is tracking FPS.</p>
<ul>
<li>Parameters:
<ul>
<li>counter: The FPSCounter that sent the update</li>
<li>fps: The current FPS of the application</li>
</ul></li>
</ul>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">func</span> <span class="nf">fpsCounter</span><span class="p">(</span><span class="nv">counter</span><span class="p">:</span> <span class="kt">FPSCounter</span><span class="p">,</span> <span class="n">didUpdateFramesPerSecond</span> <span class="nv">fps</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>counter</em>
</code>
</td>
<td>
<div>
<p>The FPSCounter that sent the update</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>fps</em>
</code>
</td>
<td>
<div>
<p>The current FPS of the application</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2016 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2016-03-04)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/Protocols.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Protocols Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Protocols Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Protocols</h1>
<p>The following protocols are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:P10FPSCounter18FPSCounterDelegate"></a>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:P10FPSCounter18FPSCounterDelegate">FPSCounterDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a FPSCounter.</p>
<a href="Protocols/FPSCounterDelegate.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span><span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2016 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2016-03-04)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/css/highlight.css
================================================
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/css/jazzy.css
================================================
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 60px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: absolute;
bottom: 10px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title> Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title=" Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html"> Docs</a> (100% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html"> Reference</a>
<img id="carat" src="img/carat.png" />
Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<a href='#authors' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h3 id='authors'>Authors</h3>
</section>
</section>
<section id="footer">
<p>© 2016 <a class="link" href="" target="_blank" rel="external"></a>. All rights reserved. (Last updated: 2016-03-04)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/js/jazzy.js
================================================
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
================================================
FILE: Documentation/docsets/.docset/Contents/Resources/Documents/undocumented.txt
================================================
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Info.plist
================================================
<?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>CFBundleIdentifier</key>
<string>com.jazzy.fpscounter</string>
<key>CFBundleName</key>
<string>FPSCounter</string>
<key>DocSetPlatformFamily</key>
<string>fpscounter</string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>isJavaScriptEnabled</key>
<true/>
<key>DashDocSetFamily</key>
<string>dashtoc</string>
</dict>
</plist>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Classes/FPSCounter.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounter Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a title="FPSCounter Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">FPSCounter Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounter Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounter</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>FPSCounter.showInStatusBar()</code> convenience method.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<div class="task-name-container">
<a name="/Initialization"></a>
<a name="//apple_ref/swift/Section/Initialization" class="dashAnchor"></a>
<a href="#/Initialization">
<h3 class="section-name">Initialization</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)init"></a>
<a name="//apple_ref/swift/Method/init()" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)init">init()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Create a new FPSCounter.</p>
<p>To start receiving FPS updates you need to start tracking with the
<code><a href="../Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:">startTracking(inRunLoop:mode:)</a></code> method.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">override</span> <span class="nf">init</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc"></a>
<a name="//apple_ref/swift/Method/deinit" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc">deinit</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Undocumented</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">deinit</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Configuration"></a>
<a name="//apple_ref/swift/Section/Configuration" class="dashAnchor"></a>
<a href="#/Configuration">
<h3 class="section-name">Configuration</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp"></a>
<a name="//apple_ref/swift/Property/delegate" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp">delegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate that should receive FPS updates.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">weak</span> <span class="k">var</span> <span class="nv">delegate</span><span class="p">:</span> <span class="kt"><a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a></span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay"></a>
<a name="//apple_ref/swift/Property/notificationDelay" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay">notificationDelay</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Delay between FPS updates. Longer delays mean more averaged FPS numbers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="k">var</span> <span class="nv">notificationDelay</span><span class="p">:</span> <span class="kt">TimeInterval</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Tracking"></a>
<a name="//apple_ref/swift/Section/Tracking" class="dashAnchor"></a>
<a href="#/Tracking">
<h3 class="section-name">Tracking</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:"></a>
<a name="//apple_ref/swift/Method/startTracking(inRunLoop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:">startTracking(inRunLoop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Start tracking FPS updates.</p>
<p>You can specify wich runloop to use for tracking, as well as the runloop modes.
Usually you’ll want the main runloop (default), and either the common run loop modes
(default), or the tracking mode (<code>RunLoop.Mode.tracking</code>).</p>
<p>When the counter is already tracking, it’s stopped first.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="kd">func</span> <span class="nf">startTracking</span><span class="p">(</span><span class="n">inRunLoop</span> <span class="nv">runloop</span><span class="p">:</span> <span class="kt">RunLoop</span> <span class="o">=</span> <span class="o">.</span><span class="n">main</span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt">RunLoop</span><span class="o">.</span><span class="kt">Mode</span> <span class="o">=</span> <span class="o">.</span><span class="n">common</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The runloop to start tracking in</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The mode(s) to track in the runloop</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking"></a>
<a name="//apple_ref/swift/Method/stopTracking()" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking">stopTracking()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Stop tracking FPS updates.</p>
<p>This method does nothing if the counter is not currently tracking.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">public</span> <span class="kd">func</span> <span class="nf">stopTracking</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Show%20FPS%20in%20the%20status%20bar"></a>
<a name="//apple_ref/swift/Section/Show FPS in the status bar" class="dashAnchor"></a>
<a href="#/Show%20FPS%20in%20the%20status%20bar">
<h3 class="section-name">Show FPS in the status bar</h3>
</a>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:"></a>
<a name="//apple_ref/swift/Method/showInStatusBar(application:runloop:mode:)" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:">showInStatusBar(application:runloop:mode:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Add a label in the status bar that shows the applications current FPS.</p>
<div class="aside aside-note">
<p class="aside-title">Note</p>
<p>Only do this in debug builds. Apple may reject your app if it covers the status bar.</p>
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="kd">func</span> <span class="nf">showInStatusBar</span><span class="p">(</span>
<span class="nv">application</span><span class="p">:</span> <span class="kt">UIApplication</span> <span class="o">=</span> <span class="o">.</span><span class="n">shared</span><span class="p">,</span>
<span class="nv">runloop</span><span class="p">:</span> <span class="kt">RunLoop</span> <span class="o">=</span> <span class="o">.</span><span class="n">main</span><span class="p">,</span>
<span class="nv">mode</span><span class="p">:</span> <span class="kt">RunLoop</span><span class="o">.</span><span class="kt">Mode</span> <span class="o">=</span> <span class="o">.</span><span class="n">common</span>
<span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>application</em>
</code>
</td>
<td>
<div>
<p>The <code>UIApplication</code> to show the FPS for</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>runloop</em>
</code>
</td>
<td>
<div>
<p>The <code>NSRunLoop</code> to use when tracking FPS. Default is the main run loop</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The run loop mode to use when tracking. Default uses <code>RunLoop.Mode.common</code></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide"></a>
<a name="//apple_ref/swift/Method/hide()" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide">hide()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Removes the label that shows the current FPS from the status bar.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="kd">func</span> <span class="nf">hide</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible"></a>
<a name="//apple_ref/swift/Variable/isVisible" class="dashAnchor"></a>
<a class="token" href="#/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible">isVisible</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns wether the FPS counter is currently visible or not.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">@objc</span>
<span class="kd">class</span> <span class="k">var</span> <span class="nv">isVisible</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Classes.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/c:@M@FPSCounter@objc(cs)FPSCounter"></a>
<a name="//apple_ref/swift/Class/FPSCounter" class="dashAnchor"></a>
<a class="token" href="#/c:@M@FPSCounter@objc(cs)FPSCounter">FPSCounter</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A class that tracks the current FPS of the running application.</p>
<p><code>FPSCounter</code> uses <code>CADisplayLink</code> updates to count the frames per second drawn.
Set the delegate of this class to get notified in certain intervals of the
current FPS.</p>
<p>If you just want to see the FPS in the application you can use the
<code>FPSCounter.showInStatusBar()</code> convenience method.</p>
<a href="Classes/FPSCounter.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">FPSCounter</span> <span class="p">:</span> <span class="kt">NSObject</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Protocols/FPSCounterDelegate.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounterDelegate Protocol Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a title="FPSCounterDelegate Protocol Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">FPSCounter Reference</a>
<img id="carat" src="../img/carat.png" />
FPSCounterDelegate Protocol Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>FPSCounterDelegate</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a <code><a href="../Classes/FPSCounter.html">FPSCounter</a></code>.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF"></a>
<a name="//apple_ref/swift/Method/fpsCounter(_:didUpdateFramesPerSecond:)" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF">fpsCounter(_:didUpdateFramesPerSecond:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Called in regular intervals while the counter is tracking FPS.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">fpsCounter</span><span class="p">(</span><span class="n">_</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt"><a href="../Classes/FPSCounter.html">FPSCounter</a></span><span class="p">,</span> <span class="n">didUpdateFramesPerSecond</span> <span class="nv">fps</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>counter</em>
</code>
</td>
<td>
<div>
<p>The FPSCounter that sent the update</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>fps</em>
</code>
</td>
<td>
<div>
<p>The current FPS of the application</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Protocols.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>Protocols Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a>
<a title="Protocols Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
Protocols Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Protocols</h1>
<p>The following protocols are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:10FPSCounter0A8DelegateP"></a>
<a name="//apple_ref/swift/Protocol/FPSCounterDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:10FPSCounter0A8DelegateP">FPSCounterDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate protocol for the FPSCounter class.</p>
<p>Implement this protocol if you want to receive updates from a <code><a href="Classes/FPSCounter.html">FPSCounter</a></code>.</p>
<a href="Protocols/FPSCounterDelegate.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">FPSCounterDelegate</span> <span class="p">:</span> <span class="kt">NSObjectProtocol</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/css/highlight.css
================================================
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/css/jazzy.css
================================================
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none;
white-space: nowrap; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 20px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.main-content section .heading:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token, .item .direct-link {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .discouraged {
text-decoration: line-through; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning, .aside-deprecated, .aside-unavailable {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: relative;
top: 10px;
bottom: 0px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounter Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="FPSCounter Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
FPSCounter Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<p><a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg" alt="Carthage compatible"></a>
<a href="https://cocoapods.org/pods/FPSCounter"><img src="https://img.shields.io/cocoapods/v/FPSCounter.svg" alt="CocoaPods"></a>
<a href="https://github.com/konoma/fps-counter/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License MIT"></a></p>
<h1 id='fpscounter' class='heading'>FPSCounter</h1>
<p>A small library to measure the frame rate of an iOS Application.</p>
<p>You can display the current frames per second in the status bar with a single line. Or if
you’d like more control, you can have your own code notified of FPS changes and display it
as needed.</p>
<p><em>Note</em>: You should only use this for debugging purposes. Especially the status bar overlay
may cause Apple to reject your app when reviewed.</p>
<h2 id='usage' class='heading'>Usage</h2>
<p>The easiest way to use this library is to add a label to the status bar:</p>
<pre class="highlight plaintext"><code>FPSCounter.showInStatusBar()
</code></pre>
<p>This will replace the status bar with a label that shows the current frames per second
the application manages to draw.</p>
<p>You can remove the label any time later:</p>
<pre class="highlight plaintext"><code>FPSCounter.hide()
</code></pre>
<p>If you’d like more control on how to display the frames, you can create a private
<code><a href="Classes/FPSCounter.html">FPSCounter</a></code> instance and set a delegate</p>
<pre class="highlight plaintext"><code>self.fpsCounter = FPSCounter()
self.fpsCounter.delegate = self
</code></pre>
<p>To retrieve updates you need to start tracking the FPS:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.startTracking()
</code></pre>
<p>If necessary you can specify what run loop and run loop mode to use while tracking:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.startTracking(inRunLoop: myRunLoop, mode: .tracking)
</code></pre>
<p>By default <code>RunLoop.main</code> and <code>RunLoop.Mode.common</code> are used.</p>
<p>When you don’t want to receive further updates, you can stop tracking:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.stopTracking()
</code></pre>
<h2 id='installation' class='heading'>Installation</h2>
<h3 id='carthage' class='heading'>Carthage</h3>
<p>To install this library via <a href="https://github.com/Carthage/Carthage">Carthage</a> add the
following to your <code>Cartfile</code>:</p>
<pre class="highlight plaintext"><code>github "konoma/fps-counter" ~> 4.0
</code></pre>
<p>Then run the standard <code>carthage update</code> process.</p>
<h3 id='cocoapods' class='heading'>CocoaPods</h3>
<p>To install this library via <a href="https://cocoapods.org">CocoaPods</a> add the following to
your <code>Podfile</code>:</p>
<pre class="highlight plaintext"><code>pod 'FPSCounter', '~> 4.0'
</code></pre>
<p>Then run the standard <code>pod update</code> process.</p>
<h2 id='license' class='heading'>License</h2>
<p>FPSCounter is released under the <a href="https://github.com/konoma/fps-counter/blob/master/LICENSE">MIT License</a>.</p>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/js/jazzy.js
================================================
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
// Dumb down quotes within code blocks that delimit strings instead of quotations
// https://github.com/realm/jazzy/issues/714
$("code q").replaceWith(function () {
return ["\"", $(this).contents(), "\""];
});
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/search.json
================================================
{"Protocols/FPSCounterDelegate.html#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF":{"name":"fpsCounter(_:didUpdateFramesPerSecond:)","abstract":"<p>Called in regular intervals while the counter is tracking FPS.</p>","parent_name":"FPSCounterDelegate"},"Protocols/FPSCounterDelegate.html":{"name":"FPSCounterDelegate","abstract":"<p>The delegate protocol for the FPSCounter class.</p>"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)init":{"name":"init()","abstract":"<p>Create a new FPSCounter.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc":{"name":"deinit","abstract":"<p>Undocumented</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp":{"name":"delegate","abstract":"<p>The delegate that should receive FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay":{"name":"notificationDelay","abstract":"<p>Delay between FPS updates. Longer delays mean more averaged FPS numbers.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:":{"name":"startTracking(inRunLoop:mode:)","abstract":"<p>Start tracking FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking":{"name":"stopTracking()","abstract":"<p>Stop tracking FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:":{"name":"showInStatusBar(application:runloop:mode:)","abstract":"<p>Add a label in the status bar that shows the applications current FPS.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide":{"name":"hide()","abstract":"<p>Removes the label that shows the current FPS from the status bar.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible":{"name":"isVisible","abstract":"<p>Returns wether the FPS counter is currently visible or not.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html":{"name":"FPSCounter","abstract":"<p>A class that tracks the current FPS of the running application.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"}}
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/undocumented.json
================================================
{
"warnings": [
],
"source_directory": "/Users/alfonso/Development/fps-counter"
}
================================================
FILE: Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/undocumented.txt
================================================
================================================
FILE: Documentation/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<title>FPSCounter Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="FPSCounter Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">FPSCounter Docs</a> (92% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">FPSCounter Reference</a>
<img id="carat" src="img/carat.png" />
FPSCounter Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/FPSCounter.html">FPSCounter</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="Protocols.html">Protocols</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Protocols/FPSCounterDelegate.html">FPSCounterDelegate</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<p><a href="https://github.com/Carthage/Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg" alt="Carthage compatible"></a>
<a href="https://cocoapods.org/pods/FPSCounter"><img src="https://img.shields.io/cocoapods/v/FPSCounter.svg" alt="CocoaPods"></a>
<a href="https://github.com/konoma/fps-counter/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License MIT"></a></p>
<h1 id='fpscounter' class='heading'>FPSCounter</h1>
<p>A small library to measure the frame rate of an iOS Application.</p>
<p>You can display the current frames per second in the status bar with a single line. Or if
you’d like more control, you can have your own code notified of FPS changes and display it
as needed.</p>
<p><em>Note</em>: You should only use this for debugging purposes. Especially the status bar overlay
may cause Apple to reject your app when reviewed.</p>
<h2 id='usage' class='heading'>Usage</h2>
<p>The easiest way to use this library is to add a label to the status bar:</p>
<pre class="highlight plaintext"><code>FPSCounter.showInStatusBar()
</code></pre>
<p>This will replace the status bar with a label that shows the current frames per second
the application manages to draw.</p>
<p>You can remove the label any time later:</p>
<pre class="highlight plaintext"><code>FPSCounter.hide()
</code></pre>
<p>If you’d like more control on how to display the frames, you can create a private
<code><a href="Classes/FPSCounter.html">FPSCounter</a></code> instance and set a delegate</p>
<pre class="highlight plaintext"><code>self.fpsCounter = FPSCounter()
self.fpsCounter.delegate = self
</code></pre>
<p>To retrieve updates you need to start tracking the FPS:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.startTracking()
</code></pre>
<p>If necessary you can specify what run loop and run loop mode to use while tracking:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.startTracking(inRunLoop: myRunLoop, mode: .tracking)
</code></pre>
<p>By default <code>RunLoop.main</code> and <code>RunLoop.Mode.common</code> are used.</p>
<p>When you don’t want to receive further updates, you can stop tracking:</p>
<pre class="highlight plaintext"><code>self.fpsCounter.stopTracking()
</code></pre>
<h2 id='installation' class='heading'>Installation</h2>
<h3 id='carthage' class='heading'>Carthage</h3>
<p>To install this library via <a href="https://github.com/Carthage/Carthage">Carthage</a> add the
following to your <code>Cartfile</code>:</p>
<pre class="highlight plaintext"><code>github "konoma/fps-counter" ~> 4.0
</code></pre>
<p>Then run the standard <code>carthage update</code> process.</p>
<h3 id='cocoapods' class='heading'>CocoaPods</h3>
<p>To install this library via <a href="https://cocoapods.org">CocoaPods</a> add the following to
your <code>Podfile</code>:</p>
<pre class="highlight plaintext"><code>pod 'FPSCounter', '~> 4.0'
</code></pre>
<p>Then run the standard <code>pod update</code> process.</p>
<h2 id='license' class='heading'>License</h2>
<p>FPSCounter is released under the <a href="https://github.com/konoma/fps-counter/blob/master/LICENSE">MIT License</a>.</p>
</section>
</section>
<section id="footer">
<p>© 2019 <a class="link" href="https://github.com/konoma/fps-counter" target="_blank" rel="external">Markus Gasser</a>. All rights reserved. (Last updated: 2019-04-08)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.5</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
================================================
FILE: Documentation/js/jazzy.js
================================================
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
// Dumb down quotes within code blocks that delimit strings instead of quotations
// https://github.com/realm/jazzy/issues/714
$("code q").replaceWith(function () {
return ["\"", $(this).contents(), "\""];
});
================================================
FILE: Documentation/search.json
================================================
{"Protocols/FPSCounterDelegate.html#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF":{"name":"fpsCounter(_:didUpdateFramesPerSecond:)","abstract":"<p>Called in regular intervals while the counter is tracking FPS.</p>","parent_name":"FPSCounterDelegate"},"Protocols/FPSCounterDelegate.html":{"name":"FPSCounterDelegate","abstract":"<p>The delegate protocol for the FPSCounter class.</p>"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)init":{"name":"init()","abstract":"<p>Create a new FPSCounter.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)dealloc":{"name":"deinit","abstract":"<p>Undocumented</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/s:10FPSCounterAAC8delegateAA0A8Delegate_pSgvp":{"name":"delegate","abstract":"<p>The delegate that should receive FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(py)notificationDelay":{"name":"notificationDelay","abstract":"<p>Delay between FPS updates. Longer delays mean more averaged FPS numbers.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)startTrackingInRunLoop:mode:":{"name":"startTracking(inRunLoop:mode:)","abstract":"<p>Start tracking FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@M@FPSCounter@objc(cs)FPSCounter(im)stopTracking":{"name":"stopTracking()","abstract":"<p>Stop tracking FPS updates.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)showInStatusBarWithApplication:runloop:mode:":{"name":"showInStatusBar(application:runloop:mode:)","abstract":"<p>Add a label in the status bar that shows the applications current FPS.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cm)hide":{"name":"hide()","abstract":"<p>Removes the label that shows the current FPS from the status bar.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html#/c:@CM@FPSCounter@objc(cs)FPSCounter(cpy)isVisible":{"name":"isVisible","abstract":"<p>Returns wether the FPS counter is currently visible or not.</p>","parent_name":"FPSCounter"},"Classes/FPSCounter.html":{"name":"FPSCounter","abstract":"<p>A class that tracks the current FPS of the running application.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"}}
================================================
FILE: Documentation/undocumented.json
================================================
{
"warnings": [
{
"file": "/Users/alfonso/Development/fps-counter/Sources/FPSCounter.swift",
"line": 71,
"symbol": "FPSCounter.deinit",
"symbol_kind": "source.lang.swift.decl.function.method.instance",
"warning": "undocumented"
}
],
"source_directory": "/Users/alfonso/Development/fps-counter"
}
================================================
FILE: Documentation/undocumented.txt
================================================
================================================
FILE: FPSCounter.podspec
================================================
Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "FPSCounter"
s.version = "4.1.0"
s.homepage = "https://github.com/konoma/fps-counter"
s.summary = "A small library to measure the frame rate of an iOS Application."
s.description = <<-DESC
FPSCounter is a small library to measure the frame rate of an iOS Application.
You can display the current frames per second in the status bar with a single line.
Or if you'd like more control, you can have your own code notified of FPS changes
and display it as needed.
DESC
# ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.license = { :type => "MIT", :file => "LICENSE" }
# ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.author = { "Markus Gasser" => "markus.gasser@konoma.ch" }
# ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.platform = :ios, "8.0"
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.source = { :git => "https://github.com/konoma/fps-counter.git", :tag => s.version }
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.source_files = "Sources/**/*.{swift,h,m}"
s.public_header_files = "Sources/**/*.h"
# ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.frameworks = "Foundation", "UIKit"
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.requires_arc = true
s.swift_version = '5.0'
end
================================================
FILE: FPSCounter.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
05371A2F1C88DEEF004C7A44 /* FPSCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 05371A2D1C88DEEF004C7A44 /* FPSCounter.h */; settings = {ATTRIBUTES = (Public, ); }; };
05371A321C88DFFB004C7A44 /* FPSCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05371A311C88DFFB004C7A44 /* FPSCounter.swift */; };
05371A3A1C88EA4C004C7A44 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05371A391C88EA4C004C7A44 /* AppDelegate.swift */; };
05371A3F1C88EA4C004C7A44 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 05371A3D1C88EA4C004C7A44 /* Main.storyboard */; };
05371A411C88EA4C004C7A44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 05371A401C88EA4C004C7A44 /* Assets.xcassets */; };
05371A441C88EA4C004C7A44 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 05371A421C88EA4C004C7A44 /* LaunchScreen.storyboard */; };
05371A4C1C88EB33004C7A44 /* FPSCounter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05371A1F1C88DEA0004C7A44 /* FPSCounter.framework */; };
05371A4D1C88EB33004C7A44 /* FPSCounter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05371A1F1C88DEA0004C7A44 /* FPSCounter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
05371A501C88EB6F004C7A44 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05371A4F1C88EB6F004C7A44 /* MapKit.framework */; };
05371A541C88FBCB004C7A44 /* FPSStatusBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05371A531C88FBCB004C7A44 /* FPSStatusBarViewController.swift */; };
05371A561C8907C0004C7A44 /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05371A511C88F21A004C7A44 /* TableViewController.swift */; };
05537C3120D4251F0000FC69 /* FPSStatusBarWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05537C3020D4251F0000FC69 /* FPSStatusBarWindow.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
05371A4A1C88EB24004C7A44 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 05371A161C88DEA0004C7A44 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 05371A1E1C88DEA0004C7A44;
remoteInfo = FPSCounter;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
05371A4E1C88EB34004C7A44 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
05371A4D1C88EB33004C7A44 /* FPSCounter.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
05371A1F1C88DEA0004C7A44 /* FPSCounter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FPSCounter.framework; sourceTree = BUILT_PRODUCTS_DIR; };
05371A2D1C88DEEF004C7A44 /* FPSCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FPSCounter.h; sourceTree = "<group>"; };
05371A2E1C88DEEF004C7A44 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
05371A311C88DFFB004C7A44 /* FPSCounter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPSCounter.swift; sourceTree = "<group>"; };
05371A371C88EA4C004C7A44 /* SampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
05371A391C88EA4C004C7A44 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
05371A3E1C88EA4C004C7A44 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
05371A401C88EA4C004C7A44 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
05371A431C88EA4C004C7A44 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
05371A451C88EA4C004C7A44 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
05371A4F1C88EB6F004C7A44 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; };
05371A511C88F21A004C7A44 /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = "<group>"; };
05371A531C88FBCB004C7A44 /* FPSStatusBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FPSStatusBarViewController.swift; sourceTree = "<group>"; };
05387057207B860900C8F0E9 /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .swiftlint.yml; sourceTree = "<group>"; };
05387058207B88B500C8F0E9 /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = "<group>"; };
05387059207B8CA500C8F0E9 /* FPSCounter.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = FPSCounter.podspec; sourceTree = "<group>"; };
0538705A207B8DAA00C8F0E9 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
0538705B207B8DAA00C8F0E9 /* .jazzy.yaml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .jazzy.yaml; sourceTree = "<group>"; };
0538705C207B8DAB00C8F0E9 /* .swift-version */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ".swift-version"; sourceTree = "<group>"; };
05537C3020D4251F0000FC69 /* FPSStatusBarWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FPSStatusBarWindow.swift; sourceTree = "<group>"; };
3B1885F425542C1A005E0773 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
05371A1B1C88DEA0004C7A44 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
05371A341C88EA4C004C7A44 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
05371A501C88EB6F004C7A44 /* MapKit.framework in Frameworks */,
05371A4C1C88EB33004C7A44 /* FPSCounter.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
05371A151C88DEA0004C7A44 = {
isa = PBXGroup;
children = (
3B1885F425542C1A005E0773 /* Package.swift */,
05387058207B88B500C8F0E9 /* Readme.md */,
0538705A207B8DAA00C8F0E9 /* LICENSE */,
05387059207B8CA500C8F0E9 /* FPSCounter.podspec */,
0538705C207B8DAB00C8F0E9 /* .swift-version */,
05387057207B860900C8F0E9 /* .swiftlint.yml */,
0538705B207B8DAA00C8F0E9 /* .jazzy.yaml */,
05371A2C1C88DEEF004C7A44 /* Sources */,
05371A381C88EA4C004C7A44 /* Sample App */,
05371A551C89058A004C7A44 /* Frameworks */,
05371A201C88DEA0004C7A44 /* Products */,
);
sourceTree = "<group>";
};
05371A201C88DEA0004C7A44 /* Products */ = {
isa = PBXGroup;
children = (
05371A1F1C88DEA0004C7A44 /* FPSCounter.framework */,
05371A371C88EA4C004C7A44 /* SampleApp.app */,
);
name = Products;
sourceTree = "<group>";
};
05371A2C1C88DEEF004C7A44 /* Sources */ = {
isa = PBXGroup;
children = (
05371A2E1C88DEEF004C7A44 /* Info.plist */,
05371A2D1C88DEEF004C7A44 /* FPSCounter.h */,
05371A311C88DFFB004C7A44 /* FPSCounter.swift */,
05371A531C88FBCB004C7A44 /* FPSStatusBarViewController.swift */,
05537C3020D4251F0000FC69 /* FPSStatusBarWindow.swift */,
);
path = Sources;
sourceTree = "<group>";
};
05371A381C88EA4C004C7A44 /* Sample App */ = {
isa = PBXGroup;
children = (
05371A451C88EA4C004C7A44 /* Info.plist */,
05371A401C88EA4C004C7A44 /* Assets.xcassets */,
05371A421C88EA4C004C7A44 /* LaunchScreen.storyboard */,
05371A3D1C88EA4C004C7A44 /* Main.storyboard */,
05371A391C88EA4C004C7A44 /* AppDelegate.swift */,
05371A511C88F21A004C7A44 /* TableViewController.swift */,
);
name = "Sample App";
path = SampleApp;
sourceTree = "<group>";
};
05371A551C89058A004C7A44 /* Frameworks */ = {
isa = PBXGroup;
children = (
05371A4F1C88EB6F004C7A44 /* MapKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
05371A1C1C88DEA0004C7A44 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
05371A2F1C88DEEF004C7A44 /* FPSCounter.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
05371A1E1C88DEA0004C7A44 /* FPSCounter */ = {
isa = PBXNativeTarget;
buildConfigurationList = 05371A271C88DEA0004C7A44 /* Build configuration list for PBXNativeTarget "FPSCounter" */;
buildPhases = (
05371A571C8A2CAB004C7A44 /* Lint Swift Files */,
05371A1A1C88DEA0004C7A44 /* Sources */,
05371A1B1C88DEA0004C7A44 /* Frameworks */,
05371A1C1C88DEA0004C7A44 /* Headers */,
05371A1D1C88DEA0004C7A44 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = FPSCounter;
productName = "fps-counter";
productReference = 05371A1F1C88DEA0004C7A44 /* FPSCounter.framework */;
productType = "com.apple.product-type.framework";
};
05371A361C88EA4C004C7A44 /* SampleApp */ = {
isa = PBXNativeTarget;
buildConfigurationList = 05371A461C88EA4C004C7A44 /* Build configuration list for PBXNativeTarget "SampleApp" */;
buildPhases = (
05371A331C88EA4C004C7A44 /* Sources */,
05371A341C88EA4C004C7A44 /* Frameworks */,
05371A351C88EA4C004C7A44 /* Resources */,
05371A4E1C88EB34004C7A44 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
05371A4B1C88EB24004C7A44 /* PBXTargetDependency */,
);
name = SampleApp;
productName = "fps-sample-app";
productReference = 05371A371C88EA4C004C7A44 /* SampleApp.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
05371A161C88DEA0004C7A44 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = "konoma GmbH";
TargetAttributes = {
05371A1E1C88DEA0004C7A44 = {
CreatedOnToolsVersion = 7.2.1;
LastSwiftMigration = 1020;
};
05371A361C88EA4C004C7A44 = {
CreatedOnToolsVersion = 7.2.1;
LastSwiftMigration = 1020;
};
};
};
buildConfigurationList = 05371A191C88DEA0004C7A44 /* Build configuration list for PBXProject "FPSCounter" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 05371A151C88DEA0004C7A44;
productRefGroup = 05371A201C88DEA0004C7A44 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
05371A1E1C88DEA0004C7A44 /* FPSCounter */,
05371A361C88EA4C004C7A44 /* SampleApp */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
05371A1D1C88DEA0004C7A44 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
05371A351C88EA4C004C7A44 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
05371A441C88EA4C004C7A44 /* LaunchScreen.storyboard in Resources */,
05371A411C88EA4C004C7A44 /* Assets.xcassets in Resources */,
05371A3F1C88EA4C004C7A44 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
05371A571C8A2CAB004C7A44 /* Lint Swift Files */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Lint Swift Files";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"SwiftLint does not exist, download from https://github.com/realm/SwiftLint\"\nfi";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
05371A1A1C88DEA0004C7A44 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
05371A541C88FBCB004C7A44 /* FPSStatusBarViewController.swift in Sources */,
05371A321C88DFFB004C7A44 /* FPSCounter.swift in Sources */,
05537C3120D4251F0000FC69 /* FPSStatusBarWindow.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
05371A331C88EA4C004C7A44 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
05371A3A1C88EA4C004C7A44 /* AppDelegate.swift in Sources */,
05371A561C8907C0004C7A44 /* TableViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
05371A4B1C88EB24004C7A44 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 05371A1E1C88DEA0004C7A44 /* FPSCounter */;
targetProxy = 05371A4A1C88EB24004C7A44 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
05371A3D1C88EA4C004C7A44 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
05371A3E1C88EA4C004C7A44 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
05371A421C88EA4C004C7A44 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
05371A431C88EA4C004C7A44 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
05371A251C88DEA0004C7A44 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
05371A261C88DEA0004C7A44 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
05371A281C88DEA0004C7A44 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ch.konoma.fps-counter";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
05371A291C88DEA0004C7A44 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ch.konoma.fps-counter";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
};
name = Release;
};
05371A471C88EA4C004C7A44 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = "$(SRCROOT)/SampleApp/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ch.konoma.fps-sample-app";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
05371A481C88EA4C004C7A44 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = "$(SRCROOT)/SampleApp/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "ch.konoma.fps-sample-app";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
05371A191C88DEA0004C7A44 /* Build configuration list for PBXProject "FPSCounter" */ = {
isa = XCConfigurationList;
buildConfigurations = (
05371A251C88DEA0004C7A44 /* Debug */,
05371A261C88DEA0004C7A44 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
05371A271C88DEA0004C7A44 /* Build configuration list for PBXNativeTarget "FPSCounter" */ = {
isa = XCConfigurationList;
buildConfigurations = (
05371A281C88DEA0004C7A44 /* Debug */,
05371A291C88DEA0004C7A44 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
05371A461C88EA4C004C7A44 /* Build configuration list for PBXNativeTarget "SampleApp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
05371A471C88EA4C004C7A44 /* Debug */,
05371A481C88EA4C004C7A44 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 05371A161C88DEA0004C7A44 /* Project object */;
}
================================================
FILE: FPSCounter.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:fps-counter.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: FPSCounter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?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>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: FPSCounter.xcodeproj/xcshareddata/xcschemes/FPSCounter.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "05371A1E1C88DEA0004C7A44"
BuildableName = "FPSCounter.framework"
BlueprintName = "FPSCounter"
ReferencedContainer = "container:FPSCounter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<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">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "05371A1E1C88DEA0004C7A44"
BuildableName = "FPSCounter.framework"
BlueprintName = "FPSCounter"
ReferencedContainer = "container:FPSCounter.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "05371A1E1C88DEA0004C7A44"
BuildableName = "FPSCounter.framework"
BlueprintName = "FPSCounter"
ReferencedContainer = "container:FPSCounter.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: FPSCounter.xcodeproj/xcshareddata/xcschemes/Sample App.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "05371A361C88EA4C004C7A44"
BuildableName = "SampleApp.app"
BlueprintName = "SampleApp"
ReferencedContainer = "container:FPSCounter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdenti
gitextract_5vekfhj0/
├── .gitignore
├── .jazzy.yaml
├── .swift-version
├── .swiftlint.yml
├── .travis.yml
├── Documentation/
│ ├── Classes/
│ │ └── FPSCounter.html
│ ├── Classes.html
│ ├── Protocols/
│ │ └── FPSCounterDelegate.html
│ ├── Protocols.html
│ ├── css/
│ │ ├── highlight.css
│ │ └── jazzy.css
│ ├── docsets/
│ │ ├── .docset/
│ │ │ └── Contents/
│ │ │ ├── Info.plist
│ │ │ └── Resources/
│ │ │ ├── Documents/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── FPSCounter.html
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Protocols/
│ │ │ │ │ └── FPSCounterDelegate.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── css/
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── index.html
│ │ │ │ ├── js/
│ │ │ │ │ └── jazzy.js
│ │ │ │ └── undocumented.txt
│ │ │ └── docSet.dsidx
│ │ ├── .tgz
│ │ ├── FPSCounter.docset/
│ │ │ └── Contents/
│ │ │ ├── Info.plist
│ │ │ └── Resources/
│ │ │ ├── Documents/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── FPSCounter.html
│ │ │ │ ├── Classes.html
│ │ │ │ ├── Protocols/
│ │ │ │ │ └── FPSCounterDelegate.html
│ │ │ │ ├── Protocols.html
│ │ │ │ ├── css/
│ │ │ │ │ ├── highlight.css
│ │ │ │ │ └── jazzy.css
│ │ │ │ ├── index.html
│ │ │ │ ├── js/
│ │ │ │ │ └── jazzy.js
│ │ │ │ ├── search.json
│ │ │ │ ├── undocumented.json
│ │ │ │ └── undocumented.txt
│ │ │ └── docSet.dsidx
│ │ └── FPSCounter.tgz
│ ├── index.html
│ ├── js/
│ │ └── jazzy.js
│ ├── search.json
│ ├── undocumented.json
│ └── undocumented.txt
├── FPSCounter.podspec
├── FPSCounter.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata/
│ └── xcschemes/
│ ├── FPSCounter.xcscheme
│ └── Sample App.xcscheme
├── LICENSE
├── Package.swift
├── Readme.md
├── SampleApp/
│ ├── AppDelegate.swift
│ ├── Assets.xcassets/
│ │ └── AppIcon.appiconset/
│ │ └── Contents.json
│ ├── Base.lproj/
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── TableViewController.swift
└── Sources/
├── FPSCounter.h
├── FPSCounter.swift
├── FPSStatusBarViewController.swift
├── FPSStatusBarWindow.swift
└── Info.plist
Condensed preview — 62 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (242K chars).
[
{
"path": ".gitignore",
"chars": 101,
"preview": "FPSCounter.xcodeproj/xcuserdata\nbuild\n.DS_Store\n/FPSCounter.xcodeproj/project.xcworkspace/xcuserdata\n"
},
{
"path": ".jazzy.yaml",
"chars": 43,
"preview": "swift_version: 5.0.0\noutput: Documentation\n"
},
{
"path": ".swift-version",
"chars": 4,
"preview": "5.0\n"
},
{
"path": ".swiftlint.yml",
"chars": 99,
"preview": "line_length: 140\n\ndisabled_rules:\n - closing_brace\n - vertical_whitespace\n\nincluded:\n - Sources\n"
},
{
"path": ".travis.yml",
"chars": 215,
"preview": "os: osx\nosx_image: xcode10.2\nlanguage: objective-c\nbefore_script: \n - pod lib lint --allow-warnings\n - swiftlint\nscrip"
},
{
"path": "Documentation/Classes/FPSCounter.html",
"chars": 22212,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounter Class Reference</title>\n <link rel=\"stylesheet\" type="
},
{
"path": "Documentation/Classes.html",
"chars": 4233,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Classes Reference</title>\n <link rel=\"stylesheet\" type=\"text/cs"
},
{
"path": "Documentation/Protocols/FPSCounterDelegate.html",
"chars": 6050,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounterDelegate Protocol Reference</title>\n <link rel=\"styles"
},
{
"path": "Documentation/Protocols.html",
"chars": 4059,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Protocols Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "Documentation/css/highlight.css",
"chars": 4479,
"preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n /* Comment */\n /* Error */\n /* Keyword */\n /"
},
{
"path": "Documentation/css/jazzy.css",
"chars": 6911,
"preview": "html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {\n background: transparent;\n bord"
},
{
"path": "Documentation/docsets/.docset/Contents/Info.plist",
"chars": 598,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/Classes/FPSCounter.html",
"chars": 18570,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounter Class Reference</title>\n <link rel=\"stylesheet\" type="
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/Classes.html",
"chars": 4069,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Classes Reference</title>\n <link rel=\"stylesheet\" type=\"text/cs"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/Protocols/FPSCounterDelegate.html",
"chars": 6065,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounterDelegate Protocol Reference</title>\n <link rel=\"styles"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/Protocols.html",
"chars": 3875,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Protocols Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/css/highlight.css",
"chars": 4479,
"preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n /* Comment */\n /* Error */\n /* Keyword */\n /"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/css/jazzy.css",
"chars": 6565,
"preview": "html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {\n background: transparent;\n bord"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/index.html",
"chars": 2186,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title> Reference</title>\n <link rel=\"stylesheet\" type=\"text/css\" href"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/js/jazzy.js",
"chars": 1182,
"preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n document.documentElement.className += ' dash"
},
{
"path": "Documentation/docsets/.docset/Contents/Resources/Documents/undocumented.txt",
"chars": 0,
"preview": ""
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Info.plist",
"chars": 623,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Classes/FPSCounter.html",
"chars": 22212,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounter Class Reference</title>\n <link rel=\"stylesheet\" type="
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Classes.html",
"chars": 4233,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Classes Reference</title>\n <link rel=\"stylesheet\" type=\"text/cs"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Protocols/FPSCounterDelegate.html",
"chars": 6050,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounterDelegate Protocol Reference</title>\n <link rel=\"styles"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/Protocols.html",
"chars": 4059,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Protocols Reference</title>\n <link rel=\"stylesheet\" type=\"text/"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/css/highlight.css",
"chars": 4479,
"preview": "/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight {\n /* Comment */\n /* Error */\n /* Keyword */\n /"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/css/jazzy.css",
"chars": 6911,
"preview": "html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {\n background: transparent;\n bord"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/index.html",
"chars": 5378,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounter Reference</title>\n <link rel=\"stylesheet\" type=\"text"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/js/jazzy.js",
"chars": 1395,
"preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n document.documentElement.className += ' dash"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/search.json",
"chars": 2563,
"preview": "{\"Protocols/FPSCounterDelegate.html#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF\":{\"name"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/undocumented.json",
"chars": 88,
"preview": "{\n \"warnings\": [\n\n ],\n \"source_directory\": \"/Users/alfonso/Development/fps-counter\"\n}"
},
{
"path": "Documentation/docsets/FPSCounter.docset/Contents/Resources/Documents/undocumented.txt",
"chars": 0,
"preview": ""
},
{
"path": "Documentation/index.html",
"chars": 5378,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>FPSCounter Reference</title>\n <link rel=\"stylesheet\" type=\"text"
},
{
"path": "Documentation/js/jazzy.js",
"chars": 1395,
"preview": "window.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n document.documentElement.className += ' dash"
},
{
"path": "Documentation/search.json",
"chars": 2563,
"preview": "{\"Protocols/FPSCounterDelegate.html#/s:10FPSCounter0A8DelegateP10fpsCounter_24didUpdateFramesPerSecondyA2AC_SitF\":{\"name"
},
{
"path": "Documentation/undocumented.json",
"chars": 339,
"preview": "{\n \"warnings\": [\n {\n \"file\": \"/Users/alfonso/Development/fps-counter/Sources/FPSCounter.swift\",\n \"line\": 7"
},
{
"path": "Documentation/undocumented.txt",
"chars": 0,
"preview": ""
},
{
"path": "FPSCounter.podspec",
"chars": 1661,
"preview": "\nPod::Spec.new do |s|\n\n # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #\n\n s.name "
},
{
"path": "FPSCounter.xcodeproj/project.pbxproj",
"chars": 22985,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "FPSCounter.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 156,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:fps-counter.xco"
},
{
"path": "FPSCounter.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "FPSCounter.xcodeproj/xcshareddata/xcschemes/FPSCounter.xcscheme",
"chars": 2877,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1020\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "FPSCounter.xcodeproj/xcshareddata/xcschemes/Sample App.xcscheme",
"chars": 2910,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1020\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "LICENSE",
"chars": 1077,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2016 konoma GmbH\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "Package.swift",
"chars": 428,
"preview": "// swift-tools-version:5.3\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
},
{
"path": "Readme.md",
"chars": 2369,
"preview": "> [!WARNING] \n> This project is not maintained anymore.\n\n[
About this extraction
This page contains the full source code of the konoma/fps-counter GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 62 files (218.4 KB), approximately 60.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.