https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&feed=atom&action=history
ProgrammingInObjectiveC:Chapter 15 - Revision history
2024-03-28T20:01:51Z
Revision history for this page on the wiki
MediaWiki 1.38.1
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3652&oldid=prev
Onionmixer: 오타수정
2013-08-03T08:05:51Z
<p>오타수정</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 08:05, 3 August 2013</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l359">Line 359:</td>
<td colspan="2" class="diff-lineno">Line 359:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>이런 객체는 '수정 불가능한(immutable)<del style="font-weight: bold; text-decoration: none;">'</del>' 객체라고 부른다 NSString 클래스는 수정할수 없는 객체를 다룬다. 그런데 스트링 내 문자를 바꿔야한다면 어떻게 할까? 예를 들어, 스트링에서 문자 몇 개를 삭제하거나, 검색한 뒤 대치하는 작업을 해야 할 때가 있다. 이런 스트링은 NSMutableString 에서 처리한다.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>이런 객체는 '수정 불가능한(immutable)' 객체라고 부른다 NSString 클래스는 수정할수 없는 객체를 다룬다. 그런데 스트링 내 문자를 바꿔야한다면 어떻게 할까? 예를 들어, 스트링에서 문자 몇 개를 삭제하거나, 검색한 뒤 대치하는 작업을 해야 할 때가 있다. 이런 스트링은 NSMutableString 에서 처리한다.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>프로그램 15.3 에는 프로그램에서 수정할 수 없는 문자 스트링을 다루는 기본 방법이 나와있다.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>프로그램 15.3 에는 프로그램에서 수정할 수 없는 문자 스트링을 다루는 기본 방법이 나와있다.</div></td></tr>
</table>
Onionmixer
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3651&oldid=prev
Onionmixer: 띄어쓰기 수정
2013-08-03T07:35:53Z
<p>띄어쓰기 수정</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:35, 3 August 2013</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1958">Line 1,958:</td>
<td colspan="2" class="diff-lineno">Line 1,958:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>주소록에 등록된 사람들이 많다면 알파벳 순서대로 정렬하면 편리할 것이다. AddressBook 클래스에 sort 메서드를 추가하고 NSMutableArray 의 메서드인 sortUsingSelector: 를 사용하면 쉽게 정렬할 수 있다. 이 메서드는 자신이 두 원소를 비교할 때 사용하는 셀렉터를 인수로 받는다. 배열에는 데이터 형에 관계없이 모든종류의 객체가 들어갈 수 있다. 그러니 일반 정렬 메서드를 구현하는 유일한 방법은 프로그래머가 배열 내 원소들을 차례대로 놓을지 말지를 정하는 것이다. 이를 위해서, 배열의 두 원소를 비교할 메서드를 추가해야 한다.<ref name="주석12">sortUsingFunction:context: 메서드를 사용하면 메서드 대신 함수로 비교할 수 있다.</ref> 이 메서드가 반환하는 결과는 NSComparisonResult 형이다. 만일, 배열에서 첫째 원소를 둘째 원소보다 앞에 위치하게 하려면 정렬하는 메서드는 NSOrderedAscending 을 반환하고, 두 원소가 동일하다고 여길 때는 NSOrderedSame 을, 그리고 첫째 원소가 둘째 원소보다 뒤에 나와야 하는 경우에는 NSOrderedDecending 을 반환한다.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>주소록에 등록된 사람들이 많다면 알파벳 순서대로 정렬하면 편리할 것이다. AddressBook 클래스에 sort 메서드를 추가하고 NSMutableArray 의 메서드인 sortUsingSelector: 를 사용하면 쉽게 정렬할 수 있다. 이 메서드는 자신이 두 원소를 비교할 때 사용하는 셀렉터를 인수로 받는다. 배열에는 데이터 형에 관계없이 모든종류의 객체가 들어갈 수 있다. 그러니 일반 정렬 메서드를 구현하는 유일한 방법은 프로그래머가 배열 내 원소들을 차례대로 놓을지 말지를 정하는 것이다. 이를 위해서, 배열의 두 원소를 비교할 메서드를 추가해야 한다.<ref name="주석12">sortUsingFunction:context: 메서드를 사용하면 메서드 대신 함수로 비교할 수 있다.</ref> 이 메서드가 반환하는 결과는 NSComparisonResult 형이다. 만일, 배열에서 첫째 원소를 둘째 원소보다 앞에 위치하게 하려면 정렬하는 메서드는 NSOrderedAscending 을 반환하고, 두 원소가 동일하다고 여길 때는 NSOrderedSame 을, 그리고 첫째 원소가 둘째 원소보다 뒤에 나와야 하는 경우에는 NSOrderedDecending 을 반환한다.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>먼저, AddressBook 클래스의 새 정렬 <del style="font-weight: bold; text-decoration: none;">메서드를보자</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>먼저, AddressBook 클래스의 새 정렬 <ins style="font-weight: bold; text-decoration: none;">메서드를 보자</ins>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="objc"></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="objc"></div></td></tr>
</table>
Onionmixer
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3650&oldid=prev
Onionmixer: 오타수정
2013-08-03T07:22:37Z
<p>오타수정</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:22, 3 August 2013</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l933">Line 933:</td>
<td colspan="2" class="diff-lineno">Line 933:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> NSArray *monthNames = [NSAraay arrayWithObjects:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> NSArray *monthNames = [NSAraay arrayWithObjects:</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> @"January", @"February", @<del style="font-weight: bold; text-decoration: none;">'</del>March", @"April",</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> @"January", @"February", @<ins style="font-weight: bold; text-decoration: none;">"</ins>March", @"April",</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> @"May", @"June", @"July", @"August", @"Septempber",</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> @"May", @"June", @"July", @"August", @"Septempber",</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> @"October", @"November", @"December", nil ];</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> @"October", @"November", @"December", nil ];</div></td></tr>
</table>
Onionmixer
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3649&oldid=prev
Onionmixer: 오타수정
2013-08-03T06:48:07Z
<p>오타수정</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 06:48, 3 August 2013</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l179">Line 179:</td>
<td colspan="2" class="diff-lineno">Line 179:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|numberWithLongLong:||initWithLongLong:||longlongValue</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|numberWithLongLong:||initWithLongLong:||longlongValue</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|- style="vertical-align:top;"</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|- style="vertical-align:top;"</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|numberWithUnsignedLongLong:||initWithUnsignedLongLong:||<del style="font-weight: bold; text-decoration: none;">nsignedLongLongValue</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|numberWithUnsignedLongLong:||initWithUnsignedLongLong:||<ins style="font-weight: bold; text-decoration: none;">unsignedLongLongValue</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|- style="vertical-align:top;"</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|- style="vertical-align:top;"</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|numberWithFloat:||initWithFloat:||floatValue</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|numberWithFloat:||initWithFloat:||floatValue</div></td></tr>
</table>
Onionmixer
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3648&oldid=prev
Onionmixer: 내용수정
2013-07-31T12:01:57Z
<p>내용수정</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:01, 31 July 2013</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l208">Line 208:</td>
<td colspan="2" class="diff-lineno">Line 208:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="text"></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="text"></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>0</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> </ins>0</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
</table>
Onionmixer
https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3647&oldid=prev
Onionmixer: OC2 15장 :: 숫자, 스트링, 컬렉션 페이지 추가
2013-07-31T11:59:51Z
<p>OC2 15장 :: 숫자, 스트링, 컬렉션 페이지 추가</p>
<a href="https://trans.onionmixer.net/mediawiki/index.php?title=ProgrammingInObjectiveC:Chapter_15&diff=3647">Show changes</a>
Onionmixer