100% found this document useful (1 vote)
40 views65 pages

Instant Ebooks Textbook iOS 12 Programming Fundamentals With Swift Swift Xcode and Cocoa Basics 5th Edition Matt Neuburg Download All Chapters

Swift

Uploaded by

zetesborrefw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
40 views65 pages

Instant Ebooks Textbook iOS 12 Programming Fundamentals With Swift Swift Xcode and Cocoa Basics 5th Edition Matt Neuburg Download All Chapters

Swift

Uploaded by

zetesborrefw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download the Full Version of textbook for Fast Typing at textbookfull.

com

iOS 12 Programming Fundamentals with Swift Swift


Xcode and Cocoa Basics 5th Edition Matt Neuburg

https://textbookfull.com/product/ios-12-programming-
fundamentals-with-swift-swift-xcode-and-cocoa-basics-5th-
edition-matt-neuburg-3/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

iOS 12 Programming Fundamentals with Swift Swift Xcode and


Cocoa Basics 5th Edition Matt Neuburg

https://textbookfull.com/product/ios-12-programming-fundamentals-with-
swift-swift-xcode-and-cocoa-basics-5th-edition-matt-neuburg-2/

textboxfull.com

iOS 12 Programming Fundamentals with Swift Swift Xcode and


Cocoa Basics 5th Edition Matt Neuburg

https://textbookfull.com/product/ios-12-programming-fundamentals-with-
swift-swift-xcode-and-cocoa-basics-5th-edition-matt-neuburg-3/

textboxfull.com

iOS 10 Programming Fundamentals with Swift Swift Xcode and


Cocoa Basics 3rd Edition Matt Neuburg

https://textbookfull.com/product/ios-10-programming-fundamentals-with-
swift-swift-xcode-and-cocoa-basics-3rd-edition-matt-neuburg/

textboxfull.com

iOS 11 Programming Fundamentals with Swift Swift Xcode and


Cocoa Basics 4th Edition Matt Neuburg

https://textbookfull.com/product/ios-11-programming-fundamentals-with-
swift-swift-xcode-and-cocoa-basics-4th-edition-matt-neuburg/

textboxfull.com
iOS 13 Programming Fundamentals with Swift Swift Xcode and
Cocoa Basics 1st Edition Matt Neuburg

https://textbookfull.com/product/ios-13-programming-fundamentals-with-
swift-swift-xcode-and-cocoa-basics-1st-edition-matt-neuburg/

textboxfull.com

iOS 14 Programming Fundamentals with Swift Covers iOS 14


Xcode 12 and Swift 5 3 7th Edition Matt Neuburg

https://textbookfull.com/product/ios-14-programming-fundamentals-with-
swift-covers-ios-14-xcode-12-and-swift-5-3-7th-edition-matt-neuburg/

textboxfull.com

Programming iOS 14 11th Edition Matt Neuburg

https://textbookfull.com/product/programming-ios-14-11th-edition-matt-
neuburg/

textboxfull.com

Learn iOS 11 Programming with Swift 4 Craig Clayton

https://textbookfull.com/product/learn-ios-11-programming-with-
swift-4-craig-clayton/

textboxfull.com

Programming IOS 12 Dive Deep Into Views View Controllers


and Frameworks 1st Edition Matt Neuburg

https://textbookfull.com/product/programming-ios-12-dive-deep-into-
views-view-controllers-and-frameworks-1st-edition-matt-neuburg/

textboxfull.com
Xc

C o 0,
od

ve a n
e1

rs d
i O Sw
S 1 if t
2, 4
.2
iOS 12
Programming
Fundamentals
with Swift
SWIFT, XCODE, AND COCOA BASICS

Matt Neuburg
FIFTH EDITION

iOS 12 Programming
Fundamentals with Swift
Swift, Xcode, and Cocoa Basics

Matt Neuburg

Boston
iOS 12 Programming Fundamentals with Swift, Fifth Edition
by Matt Neuburg
Copyright © 2018 Matt Neuburg. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://oreilly.com/safari). For more information, contact our corporate/insti‐
tutional sales department: 800-998-9938 or [email protected].

Editor: Rachel Roumeliotis Cover Designer: Karen Montgomery


Production Editor: Kristen Brown Interior Designer: David Futato
Proofreader: O’Reilly Production Services Illustrator: Matt Neuburg
Indexer: Matt Neuburg

April 2015: First Edition


October 2015: Second Edition
October 2016: Third Edition
October 2017: Fourth Edition
September 2018: Fifth Edition

Revision History for the Fifth Edition


2018-09-26: First release

See http://oreilly.com/catalog/errata.csp?isbn=9781492044550 for release details.

The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. iOS 12 Programming Fundamentals
with Swift, the image of a harp seal, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the author have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the author disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.

ISBN: 978-1-492-04455-0
[LSI]
Table of Contents

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

Part I. Language
1. The Architecture of Swift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Ground of Being 3
Everything Is an Object? 5
Three Flavors of Object Type 6
Variables 6
Functions 8
The Structure of a Swift File 9
Scope and Lifetime 11
Object Members 13
Namespaces 13
Modules 14
Instances 15
Why Instances? 17
The Keyword self 19
Privacy 20
Design 22
Object Types and APIs 23
Instance Creation, Scope, and Lifetime 25
Summary and Conclusion 25

2. Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Function Parameters and Return Value 27
Void Return Type and Parameters 31
Function Signature 32
External Parameter Names 32

iii
Overloading 34
Default Parameter Values 35
Variadic Parameters 35
Ignored Parameters 36
Modifiable Parameters 37
Function in Function 40
Recursion 42
Function As Value 42
Anonymous Functions 45
Define-and-Call 51
Closures 52
How Closures Improve Code 54
Function Returning Function 55
Closure Setting a Captured Variable 58
Closure Preserving Its Captured Environment 59
Escaping Closures 60
Curried Functions 60
Function References and Selectors 62
Function Reference Scope 64
Selectors 65

3. Variables and Simple Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69


Variable Scope and Lifetime 69
Variable Declaration 71
Computed Initializer 74
Computed Variables 76
Setter Observers 79
Lazy Initialization 80
Built-In Simple Types 82
Bool 82
Numbers 84
String 92
Character and String Index 96
Range 101
Tuple 103
Optional 105

4. Object Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


Object Type Declarations and Features 119
Initializers 121
Properties 127
Methods 130

iv | Table of Contents
Subscripts 132
Nested Object Types 135
Instance References 135
Enums 137
Raw Values 138
Associated Values 140
Enum Case Iteration 142
Enum Initializers 143
Enum Properties 144
Enum Methods 145
Why Enums? 146
Structs 147
Struct Initializers, Properties, and Methods 147
Struct As Namespace 149
Classes 149
Value Types and Reference Types 150
Subclass and Superclass 156
Class Initializers 161
Class Deinitializer 169
Class Properties and Methods 170
Polymorphism 172
Casting 175
Casting Down 176
Type Testing and Casting Down Safely 176
Type Testing and Casting Optionals 178
Bridging to Objective-C 178
Type References 180
From Instance to Type 180
Type as Value 181
The Keyword Self 183
Comparing Types 184
Summary of Type Terminology 185
Protocols 186
Why Protocols? 187
Protocol Type Testing and Casting 189
Declaring a Protocol 190
Protocol Composition 191
Optional Protocol Members 192
Class Protocol 194
Implicitly Required Initializers 195
Literal Convertibles 196
Generics 197

Table of Contents | v
Generic Declarations 200
Contradictory Resolution 202
Type Constraints 203
Explicit Specialization 205
Generic Invariance 207
Associated Type Chains 208
Where Clauses 210
Extensions 213
Extending Object Types 213
Extending Protocols 215
Extending Generics 217
Umbrella Types 219
Any 219
AnyObject 221
AnyClass 223
Collection Types 224
Array 224
Dictionary 240
Set 247

5. Flow Control and More. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253


Flow Control 253
Branching 254
Loops 266
Jumping 271
Privacy 286
Private and Fileprivate 288
Public and Open 289
Privacy Rules 290
Introspection 290
Operators 291
Synthesized Protocol Implementations 295
Key Paths 298
Dynamic Member Lookup 300
Memory Management 301
Memory Management of Reference Types 301
Exclusive Access to Value Types 308

Part II. IDE

vi | Table of Contents
6. Anatomy of an Xcode Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
New Project 313
The Project Window 315
The Navigator Pane 317
The Utilities Pane 322
The Editor 323
The Project File and Its Dependents 325
What’s In the Project Folder 326
Groups 327
The Target 328
Build Phases 328
Build Settings 330
Configurations 331
Schemes and Destinations 333
From Project to Built App 335
Build Settings 338
Property List Settings 338
Nib Files 339
Additional Resources 340
Code Files 342
Frameworks and SDKs 343
The App Launch Process 345
The Entry Point 345
UIApplicationMain 346
App Without a Storyboard 348
Renaming Parts of a Project 349

7. Nib Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351


The Nib Editor Interface 352
Document Outline 353
Canvas 356
Inspectors and Libraries 358
Nib Loading 359
When Nibs Are Loaded 360
Manual Nib Loading 361
Connections 363
Outlets 363
The Nib Owner 364
Automatically Configured Nibs 368
Misconfigured Outlets 369
Deleting an Outlet 371
More Ways to Create Outlets 372

Table of Contents | vii


Outlet Collections 374
Action Connections 375
More Ways to Create Actions 377
Misconfigured Actions 379
Connections Between Nibs — Not! 379
Additional Configuration of Nib-Based Instances 380

8. Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
The Documentation Window 385
Class Documentation Pages 386
Quick Help 390
Symbol Declarations 392
Header Files 393
Sample Code 394
Internet Resources 394

9. Life Cycle of a Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397


Environmental Dependencies 397
Permissible Runtime Environment 398
Backward Compatibility 398
Device Type 400
Arguments and Environment Variables 401
Conditional Compilation 402
Version Control 404
Editing and Navigating Your Code 407
Autocompletion 409
Snippets 410
Fix-it and Live Syntax Checking 412
Navigation 413
Finding 415
Refactoring 416
Running in the Simulator 416
Debugging 417
Caveman Debugging 417
The Xcode Debugger 420
Testing 427
Unit Tests 428
Interface Tests 431
Clean 433
Running on a Device 433
Obtaining a Developer Program Membership 434
Signing an App 435

viii | Table of Contents


Automatic Signing 436
Manual Signing 439
Running the App 441
Managing Development Certificates and Devices 442
Profiling 442
Gauges 442
Memory Debugging 444
Instruments 445
Localization 448
Distribution 453
Making an Archive 453
The Distribution Certificate 454
The Distribution Profile 456
Distribution for Testing 457
Final App Preparations 458
Screenshots and Video Previews 461
Property List Settings 463
Submission to the App Store 464

Part III. Cocoa


10. Cocoa Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Subclassing 469
Categories and Extensions 472
How Swift Uses Extensions 472
How You Use Extensions 473
How Cocoa Uses Categories 473
Protocols 475
Informal Protocols 477
Optional Methods 477
Some Foundation Classes 480
NSRange and NSNotFound 481
NSString and Friends 483
NSDate and Friends 486
NSNumber 487
NSValue 489
NSData 490
NSMeasurement and Friends 491
Equality, Hashability, and Comparison 491
NSArray and NSMutableArray 494
NSDictionary and NSMutableDictionary 496

Table of Contents | ix
NSSet and Friends 496
NSIndexSet 497
NSNull 498
Immutable and Mutable 498
Property Lists 500
Codable 501
Accessors, Properties, and Key–Value Coding 504
Swift Accessors 505
Key–Value Coding 507
Uses of Key–Value Coding 508
KVC and Outlets 510
Cocoa Key Paths 510
The Secret Life of NSObject 511

11. Cocoa Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513


Reasons for Events 513
Subclassing 514
Notifications 516
Receiving a Notification 517
Unregistering 519
Posting a Notification 520
Timer 521
Delegation 523
Cocoa Delegation 523
Implementing Delegation 525
Data Sources 527
Actions 527
The Responder Chain 530
Deferring Responsibility 531
Nil-Targeted Actions 532
Key–Value Observing 533
Registration and Notification 534
Unregistering 535
Key–Value Observing Example 536
Swamped by Events 537
Delayed Performance 540

12. Memory Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543


Principles of Cocoa Memory Management 543
Rules of Cocoa Memory Management 544
What ARC Is and What It Does 545
How Cocoa Objects Manage Memory 546

x | Table of Contents
Autorelease Pool 547
Memory Management of Instance Properties 549
Retain Cycles and Weak References 550
Unusual Memory Management Situations 552
Notification Observers 552
KVO Observers 554
Timers 554
Other Unusual Situations 556
Nib Loading and Memory Management 556
Memory Management of CFTypeRefs 557
Property Memory Management Policies 559
Debugging Memory Management Mistakes 561

13. Communication Between Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563


Visibility by Instantiation 564
Visibility by Relationship 566
Global Visibility 567
Notifications and Key–Value Observing 569
Model–View–Controller 569

A. C, Objective-C, and Swift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

Table of Contents | xi
Preface

On June 2, 2014, Apple’s WWDC keynote address ended with a shocking announce‐
ment: “We have a new programming language.” This came as a huge surprise to the
developer community, which was accustomed to Objective-C, warts and all, and
doubted that Apple could ever possibly relieve them from the weight of its venerable
legacy. The developer community, it appeared, had been wrong.
Having picked themselves up off the floor, developers immediately began to consider
this new language — Swift — studying it, critiquing it, and deciding whether to use it.
My own first move was to translate all my existing iOS apps into Swift; this was
enough to convince me that Swift deserved to be, and probably would be, adopted by
new students of iOS programming, and that my books, therefore, should henceforth
assume that readers are using Swift.
That decision has proven prophetic. Programmers of iOS have flocked to Swift in
increasing numbers, and Swift itself has only improved. My iOS apps (such as Diabel‐
li’s Theme, LinkSame, Zotz!, TidBITS News, and my Latin and Greek flashcard apps)
have all been rewritten in Swift, and are far easier for me to understand and maintain
than their Objective-C originals.
Xcode 10 comes with Swift 4.2. The language has evolved greatly in its details and in
the nature of its integration with the Cocoa libraries that underlie iOS programming,
but its spirit has remained constant. The Swift language is designed from the ground
up with these salient features:
Object-orientation
Swift is a modern, object-oriented language. It is purely object-oriented: “Every‐
thing is an object.”
Clarity
Swift is easy to read and easy to write. Its syntax is clear, consistent, and explicit,
with few hidden shortcuts and minimal syntactic trickery.

xiii
Safety
Swift enforces strong typing to ensure that it knows, and that you know, what the
type of every object reference is at every moment.
Economy
Swift is a fairly small language, providing some basic types and functionalities
and no more. The rest must be provided by your code, or by libraries of code that
you use — such as Cocoa.
Memory management
Swift manages memory automatically. You will rarely have to concern yourself
with memory management.
Cocoa compatibility
The Cocoa APIs are written primarily in C and Objective-C. Swift is explicitly
designed to interface with most of the Cocoa APIs.
These features make Swift an excellent language for learning to program iOS.
The alternative, Objective-C, still exists, and you can use it if you like. Indeed, it is
easy to write an app that includes both Swift code and Objective-C code; and you may
have reason to do so. Objective-C, however, lacks the very advantages that Swift
offers. Objective-C agglomerates object-oriented features onto C. It is therefore only
partially object-oriented; it has both objects and scalar data types, and its objects have
to be slotted into one particular C data type (pointers). Its syntax can be difficult and
tricky; reading and writing nested method calls can make one’s eyes glaze over, and it
invites hacky habits such as implicit nil-testing. Its type checking can be and fre‐
quently is turned off, resulting in programmer errors where a message is sent to the
wrong type of object and the program crashes.
Recent revisions and additions to Objective-C — ARC, synthesis and autosynthesis,
improved literal array and dictionary syntax, blocks — have made it easier and more
convenient, but such patches have also made the language even larger and possibly
even more confusing. Because Objective-C must encompass C, there are limits to
how far it can be extended and revised. Swift, on the other hand, is a clean start. If
you were to dream of completely revising Objective-C to create a better Objective-C,
Swift might be what you would dream of. It puts a modern, rational front end
between you and the Cocoa Objective-C APIs.
Still, the reader may also need some awareness of Objective-C (including C). The
Foundation and Cocoa APIs, the built-in commands with which your code must
interact in order to make anything happen on an iOS device, are still written in C and
Objective-C. In order to interact with them, you might have to know what those lan‐
guages would expect.

xiv | Preface
Therefore, although I do not attempt to teach Objective-C in this book, I do describe
it in enough detail to allow you to read it when you encounter it in the documenta‐
tion and on the Internet, and I occasionally show some Objective-C code. Part III, on
Cocoa, is really all about learning to think the way Objective-C thinks — because the
structure and behavior of the Cocoa APIs are fundamentally based on Objective-C.
And the book ends with an appendix that details how Swift and Objective-C commu‐
nicate with one another, as well as explaining how your app can be written partly in
Swift and partly in Objective-C.

The Scope of This Book


This book is actually one of a pair with my Programming iOS 12, which picks up
exactly where this book leaves off. They complement and supplement one another.
The two-book architecture should, I believe, render the size and scope of each book
tractable for readers. Together, they provide a complete grounding in the knowledge
needed to begin writing iOS apps; thus, when you do start writing iOS apps, you’ll
have a solid and rigorous understanding of what you are doing and where you are
heading. If writing an iOS program is like building a house of bricks, this book
teaches you what a brick is and how to handle it, while Programming iOS 12 hands
you some actual bricks and tells you how to assemble them.
When you have read this book, you’ll know about Swift, Xcode, and the underpin‐
nings of the Cocoa framework, and you will be ready to proceed directly to Program‐
ming iOS 12. Conversely, Programming iOS 12 assumes a knowledge of this book; it
begins, like Homer’s Iliad, in the middle of the story, with the reader jumping with all
four feet into views and view controllers, and with a knowledge of the language and
the Xcode IDE already presupposed. If you started reading Programming iOS 12 and
wondered about such unexplained matters as Swift language basics, the
UIApplicationMain function, the nib-loading mechanism, Cocoa patterns of delega‐
tion and notification, and retain cycles, wonder no longer — I didn’t explain them
there because I do explain them here.
The three parts of this book teach the underlying basis of all iOS programming:
• Part I introduces the Swift language, from the ground up — I do not assume that
you know any other programming languages. My way of teaching Swift is differ‐
ent from other treatments, such as Apple’s; it is systematic and Euclidean, with
pedagogical building blocks piled on one another in what I regard as the most
helpful order. At the same time, I have tried to confine myself to the essentials.
Swift is not a big language, but it has some subtle and unusual corners. You don’t
need to dive deep into all of these, and my discussion will leave many of them
unexplored. You will probably never encounter them, and if you do, you will
have entered an advanced Swift world outside the scope of this discussion. To
give an obvious example, readers may be surprised to find that I never mention

Preface | xv
Swift playgrounds or the REPL. My focus here is real-life iOS programming, and
my explanation of Swift therefore concentrates on those common, practical
aspects of the language that, in my experience, actually come into play in the
course of programming iOS.
• Part II turns to Xcode, the world in which all iOS programming ultimately takes
place. It explains what an Xcode project is and how it is transformed into an app,
and how to work comfortably and nimbly with Xcode to consult the documenta‐
tion and to write, navigate, and debug code, as well as how to bring your app
through the subsequent stages of running on a device and submission to the App
Store. There is also a very important chapter on nibs and the nib editor (Interface
Builder), including outlets and actions as well as the mechanics of nib loading;
however, such specialized topics as autolayout constraints in the nib are post‐
poned to the other book.
• Part III introduces the Cocoa Touch framework. When you program for iOS, you
take advantage of a suite of frameworks provided by Apple. These frameworks,
taken together, constitute Cocoa; the brand of Cocoa that provides the API for
programming iOS is Cocoa Touch. Your code will ultimately be almost entirely
about communicating with Cocoa. The Cocoa Touch frameworks provide the
underlying functionality that any iOS app needs to have. But to use a framework,
you have to think the way the framework thinks, put your code where the frame‐
work expects it, and fulfill many obligations imposed on you by the framework.
To make things even more interesting, Cocoa uses Objective-C, while you’ll be
using Swift: you need to know how your Swift code will interface with Cocoa’s
features and behaviors. Cocoa provides important foundational classes and adds
linguistic and architectural devices such as categories, protocols, delegation, and
notifications, as well as the pervasive responsibilities of memory management.
Key–value coding and key–value observing are also discussed here.
The reader of this book will thus get a thorough grounding in the fundamental
knowledge and techniques that any good iOS programmer needs. The book itself
doesn’t show how to write any particularly interesting iOS apps, but it does constantly
use my own real apps and real programming situations to illustrate and motivate its
explanations. And then you’ll be ready for Programming iOS 12, of course!

Versions
This book is geared to Swift 4.2, iOS 12, and Xcode 10.
In general, only very minimal attention is given to earlier versions of iOS and Xcode.
It is not my intention to embrace in this book any detailed knowledge about earlier
versions of the software, which is, after all, readily and compendiously available in my
earlier books. The book does contain, nevertheless, a few words of advice about back‐
ward compatibility (especially in Chapter 9).

xvi | Preface
A word about method names. I generally give method names in Swift, in the style of a
function reference (as described in Chapter 2) — that is, the name plus parentheses
containing the parameter labels followed by colon. Now and then, if a method is
already under discussion and there is no ambiguity, I’ll use the bare name. In a few
places, such as Appendix A, where the Objective-C language is explicitly under dis‐
cussion, I use Objective-C method names.
Please bear in mind that Apple continues to make adjustments to the Swift language.
I have tried to keep my code up-to-date right up to the moment when the manuscript
left my hands; but if, at some future time, a new version of Xcode is released along
with a new version of Swift, some of the code in this book, and even some informa‐
tion about Swift itself, might be slightly incorrect. Please make allowances, and be
prepared to compensate.
Screenshots of Xcode were taken using Xcode 10 under macOS 10.13 High Sierra. I
have not upgraded my machine to macOS 10.14 Mojave, because at the time of this
writing it was too new to be trusted with mission-critical work. If you are braver than
I am and running Mojave, your interface may naturally look slightly different from
the screenshots (especially if you’re using “dark mode”), but this difference will be
minimal and shouldn’t cause any confusion.

Acknowledgments
My thanks go first and foremost to the people at O’Reilly Media who have made writ‐
ing a book so delightfully easy: Rachel Roumeliotis, Sarah Schneider, Kristen Brown,
Dan Fauxsmith, Adam Witwer, and Sanders Kleinfeld come particularly to mind.
And let’s not forget my first and long-standing editor, Brian Jepson, whose influence
is present throughout.
As in the past, I have been greatly aided by some fantastic software, whose excellences
I have appreciated at every moment of the process of writing this book. I should like
to mention, in particular:
• git (http://git-scm.com)
• Sourcetree (http://www.sourcetreeapp.com)
• TextMate (http://macromates.com)
• AsciiDoc (http://www.methods.co.nz/asciidoc)
• Asciidoctor (http://asciidoctor.org)
• BBEdit (http://barebones.com/products/bbedit/)
• EasyFind (http://www.devontechnologies.com/products/freeware.html)
• Snapz Pro X (http://www.ambrosiasw.com)
• GraphicConverter (http://www.lemkesoft.com)

Preface | xvii
• OmniGraffle (http://www.omnigroup.com)
The book was typed and edited entirely on my faithful Unicomp Model M keyboard
(http://pckeyboard.com), without which I could never have done so much writing over
so long a period so painlessly. For more about my physical work environment, see
http://matt.neuburg.usesthis.com.

From the Programming iOS 4 Preface


A programming framework has a kind of personality, an overall flavor that provides
an insight into the goals and mindset of those who created it. When I first encoun‐
tered Cocoa Touch, my assessment of its personality was: “Wow, the people who
wrote this are really clever!” On the one hand, the number of built-in interface
objects was severely and deliberately limited; on the other hand, the power and flexi‐
bility of some of those objects, especially such things as UITableView, was greatly
enhanced over their OS X counterparts. Even more important, Apple created a partic‐
ularly brilliant way (UIViewController) to help the programmer make entire blocks
of interface come and go and supplant one another in a controlled, hierarchical man‐
ner, thus allowing that tiny iPhone display to unfold virtually into multiple interface
worlds within a single app without the user becoming lost or confused.
The popularity of the iPhone, with its largely free or very inexpensive apps, and the
subsequent popularity of the iPad, have brought and will continue to bring into the
fold many new programmers who see programming for these devices as worthwhile
and doable, even though they may not have felt the same way about OS X. Apple’s
own annual WWDC developer conventions have reflected this trend, with their
emphasis shifted from OS X to iOS instruction.
The widespread eagerness to program iOS, however, though delightful on the one
hand, has also fostered a certain tendency to try to run without first learning to walk.
iOS gives the programmer mighty powers that can seem as limitless as imagination
itself, but it also has fundamentals. I often see questions online from programmers
who are evidently deep into the creation of some interesting app, but who are stymied
in a way that reveals quite clearly that they are unfamiliar with the basics of the very
world in which they are so happily cavorting.
It is this state of affairs that has motivated me to write this book, which is intended to
ground the reader in the fundamentals of iOS. I love Cocoa and have long wished to
write about it, but it is iOS and its popularity that has given me a proximate excuse to
do so. Here I have attempted to marshal and expound, in what I hope is a pedagogi‐
cally helpful and instructive yet ruthlessly Euclidean and logical order, the principles
and elements on which sound iOS programming rests. My hope, as with my previous
books, is that you will both read this book cover to cover (learning something new
often enough to keep you turning the pages) and keep it by you as a handy reference.

xviii | Preface
This book is not intended to disparage Apple’s own documentation and example
projects. They are wonderful resources and have become more wonderful as time
goes on. I have depended heavily on them in the preparation of this book. But I also
find that they don’t fulfill the same function as a reasoned, ordered presentation of
the facts. The online documentation must make assumptions as to how much you
already know; it can’t guarantee that you’ll approach it in a given order. And online
documentation is more suitable to reference than to instruction. A fully written
example, no matter how well commented, is difficult to follow; it demonstrates, but it
does not teach.
A book, on the other hand, has numbered chapters and sequential pages; I can
assume you know views before you know view controllers for the simple reason that
Part I precedes Part II. And along with facts, I also bring to the table a degree of expe‐
rience, which I try to communicate to you. Throughout this book you’ll find me
referring to “common beginner mistakes”; in most cases, these are mistakes that I
have made myself, in addition to seeing others make them. I try to tell you what the
pitfalls are because I assume that, in the course of things, you will otherwise fall into
them just as naturally as I did as I was learning. You’ll also see me construct many
examples piece by piece or extract and explain just one tiny portion of a larger app. It
is not a massive finished program that teaches programming, but an exposition of the
thought process that developed that program. It is this thought process, more than
anything else, that I hope you will gain from reading this book.

Conventions Used in This Book


The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program ele‐
ments such as variable or function names, databases, data types, environment
variables, statements, and keywords.
Constant width bold
Shows commands or other text that should be typed literally by the user.
Constant width italic
Shows text that should be replaced with user-supplied values or by values deter‐
mined by context.

This element signifies a tip or suggestion.

Preface | xix
This element signifies a general note.

This element indicates a warning or caution.

Using Code Examples


Supplemental material (code examples, exercises, etc.) is available for download at
http://github.com/mattneub/Programming-iOS-Book-Examples.
This book is here to help you get your job done. In general, if example code is offered
with this book, you may use it in your programs and documentation. You do not
need to contact us for permission unless you’re reproducing a significant portion of
the code. For example, writing a program that uses several chunks of code from this
book does not require permission. Selling or distributing a CD-ROM of examples
from O’Reilly books does require permission. Answering a question by citing this
book and quoting example code does not require permission. Incorporating a signifi‐
cant amount of example code from this book into your product’s documentation does
require permission.
We appreciate, but do not require, attribution. An attribution usually includes the
title, author, publisher, and ISBN. For example: “iOS 12 Programming Fundamentals
with Swift by Matt Neuburg (O’Reilly). Copyright 2018 Matt Neuburg,
978-1-492-04455-0.”
If you feel your use of code examples falls outside fair use or the permission given
above, feel free to contact us at [email protected].

Safari® Books Online


Safari (formerly Safari Books Online) is a membership-
based training and reference platform for enterprise, gov‐
ernment, educators, and individuals.
Members have access to thousands of books, training videos, Learning Paths, interac‐
tive tutorials, and curated playlists from over 250 publishers, including O’Reilly
Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Profes‐
sional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press,
John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe
Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, and
Course Technology, among others.

xx | Preface
For more information, please visit http://oreilly.com/safari.

How to Contact Us
Please address comments and questions concerning this book to the publisher:

O’Reilly Media, Inc.


1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any additional
information. You can access this page at http://bit.ly/ios12-prog-fundamentals.
To comment or ask technical questions about this book, send email to bookques‐
[email protected].
For more information about our books, courses, conferences, and news, see our web‐
site at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia

Preface | xxi
PART I
Language

This part of the book teaches the Swift language, from the ground up. The descrip‐
tion is rigorous and orderly. Here you’ll become sufficiently conversant with Swift to
be comfortable with it, so that you can proceed to the practical business of actual
programming.
• Chapter 1 surveys the structure of a Swift program, both physically and concep‐
tually. You’ll learn how Swift code files are organized, and you’ll be introduced to
the most important underlying concepts of the object-oriented Swift language:
variables and functions, scopes and namespaces, object types and their instances.
• Chapter 2 explores Swift functions. We start with the basics of how functions are
declared and called; then we discuss parameters — external parameter names,
default parameters, and variadic parameters. Then we dive deep into the power
of Swift functions, with an explanation of functions inside functions, functions as
first-class values, anonymous functions, functions as closures, curried functions,
and function references and selectors.
• Chapter 3 starts with Swift variables — their scope and lifetime, and how they are
declared and initialized, along with features such as computed variables and set‐
ter observers. Then some important built-in Swift types are introduced, includ‐
ing Booleans, numbers, strings, ranges, tuples, and Optionals.
• Chapter 4 is all about Swift object types — classes, structs, and enums. It explains
how these three object types work, and how you declare, instantiate, and use
them. Then it proceeds to polymorphism and casting, protocols, generics, and
extensions. The chapter concludes with a discussion of Swift’s umbrella types,
such as Any and AnyObject, and collection types — Array, Dictionary, and Set
(including option sets).
• Chapter 5 is a miscellany. We start with Swift’s flow control structures for branch‐
ing, looping, and jumping, including error handling. Then I describe Swift access
control (privacy), introspection (reflection), and how to create your own opera‐
tors. There follows a discussion of some recently added Swift language features:
synthesized protocol implementations, key paths, and dynamic member lookup.
The chapter concludes by considering Swift memory management.
CHAPTER 1
The Architecture of Swift

It will be useful at the outset for you to have a general sense of how the Swift language
is constructed and what a Swift-based iOS program looks like. This chapter will sur‐
vey the overall architecture and nature of the Swift language. Subsequent chapters
will fill in the details.

Ground of Being
A complete Swift command is a statement. A Swift text file consists of multiple lines
of text. Line breaks are meaningful. The typical layout of a program is one statement,
one line:
print("hello")
print("world")

(The print command provides instant feedback in the Xcode console.)


You can combine more than one statement on a line, but then you need to put a
semicolon between them:
print("hello"); print("world")
You are free to put a semicolon at the end of a statement that is last or alone on its
line, but no one ever does (except out of habit, because C and Objective-C require the
semicolon):
print("hello");
print("world");
Conversely, a single statement can be broken into multiple lines, in order to prevent
long statements from becoming long lines. But you should try to do this at sensible
places so as not to confuse Swift. For example, after an opening parenthesis is a good
place:

3
print(
"world")
Comments are everything after two slashes in a line (so-called C++-style comments):
print("world") // this is a comment, so Swift ignores it

You can also enclose comments in /*...*/, as in C. Unlike C, C-style comments can
be nested.
Many constructs in Swift use curly braces as delimiters:
class Dog {
func bark() {
print("woof")
}
}
By convention, the contents of curly braces are preceded and followed by line breaks
and are indented for clarity, as shown in the preceding code. Xcode will help impose
this convention, but the truth is that Swift doesn’t care, and layouts like this are legal
(and are sometimes more convenient):
class Dog { func bark() { print("woof") }}
Swift is a compiled language. This means that your code must build — passing
through the compiler and being turned from text into some lower-level form that a
computer can understand — before it can run and actually do the things it says to do.
The Swift compiler is very strict; in the course of writing a program, you will often try
to build and run, only to discover that you can’t even build in the first place, because
the compiler will flag some error, which you will have to fix if you want the code to
run. Less often, the compiler will let you off with a warning; the code can run, but in
general you should take warnings seriously and fix whatever they are telling you
about. The strictness of the compiler is one of Swift’s greatest strengths, and provides
your code with a large measure of audited correctness even before it ever runs.
The Swift compiler’s error and warning messages, however, range from the insightful
to the obtuse to the downright misleading. You will often know that something is
wrong with a line of code, but the Swift compiler will not be telling you clearly exactly
what is wrong or even where in the line to focus your attention. My advice in these
situations is to pull the line apart into several lines of simpler code until you reach a
point where you can guess what the issue is. Try to love the compiler despite the occa‐
sional unhelpful nature of its messages. Remember, it knows more than you do, even
if it is sometimes rather inarticulate about its knowledge.

4 | Chapter 1: The Architecture of Swift


Everything Is an Object?
In Swift, “everything is an object.” That’s a boast common to various modern object-
oriented languages, but what does it mean? Well, that depends on what you mean by
“object” — and what you mean by “everything.”
Let’s start by stipulating that an object, roughly speaking, is something you can send a
message to. A message, roughly speaking, is an imperative instruction. For example,
you can give commands to a dog: “Bark!” “Sit!” In this analogy, those phrases are
messages, and the dog is the object to which you are sending those messages.
In Swift, the syntax of message-sending is dot-notation. We start with the object; then
there’s a dot (a period); then there’s the message. (Some messages are also followed by
parentheses, but ignore them for now; the full syntax of message-sending is one of
those details we’ll be filling in later.) This is valid Swift syntax:
fido.bark()
rover.sit()
The idea of everything being an object is a way of suggesting that even “primitive” lin‐
guistic entities can be sent messages. Take, for example, 1. It appears to be a literal
digit and no more. It will not surprise you, if you’ve ever used any programming lan‐
guage, that you can say things like this in Swift:
let sum = 1 + 2

But it is surprising to find that 1 can be followed by a dot and a message. This is legal
and meaningful in Swift (don’t worry about what it actually means):
let s = 1.description

But we can go further. Return to that innocent-looking 1 + 2 from our earlier code.
It turns out that this is actually a kind of syntactic trickery, a convenient way of
expressing and hiding what’s really going on. Just as 1 is actually an object, + is
actually a message; but it’s a message with special syntax (operator syntax). In Swift,
every noun is an object, and every verb is a message.
Perhaps the ultimate acid test for whether something is an object in Swift is whether
you can modify it. An object type can be extended in Swift, meaning that you can
define your own messages on that type. For example, you can’t normally send the say-
Hello message to a number. But you can change a number type so that you can:
extension Int {
func sayHello() {
print("Hello, I'm \(self)")
}
}
1.sayHello() // outputs: "Hello, I'm 1"

Everything Is an Object? | 5
Another Random Scribd Document
with Unrelated Content
YHDEKSÄSSEITSEMÄTTÄ LUKU

Vihdoinkin!

Muutokset kuumesairaan huoneessa ovat hitaita ja vaihtelevia;


mutta kuumeisessa maailmassa ne tapahtuvat nopeasti ja ovat
korjaamattomia.

Pikku Dorritin osana oli odotella kumpiakin muutoksia.


Marshalsean muurit syleilivät häntä taas lapsenaan suuren osan
päivästä, jolloin hän ajatteli ja työskenteli Clennamin puolesta ja
hyväksi, vartioi ja palveli häntä ja jätti hänet vain lyhyiksi ajoiksi,
poissaollessaankin ympäröiden häntä hellimmällä rakkaudellaan ja
huolenpidollaan. Ulkopuolella vankilan porttejakin esitti elämä
hänelle velvoittavia vaatimuksia, jotka hän väsymättömän
kärsivällisenä täytti. Siellä oli ylpeä, ärtyisä, oikullinen Fanny, yhä
edistyneenä siinä tilassa, joka teki hänet sopimattomaksi
esiintymään seuraelämässä ja joka oli suututtanut häntä
muistettavana kynä veitsi-iltana; hän oli näet päättänyt kieltäytyä
kaikesta lohdutuksesta pitäen itseänsä vääryyttä kärsivänä,
sallimatta silti kenenkään pitää häntä sellaisena. Siellä oli hänen
veljensä, heikko, kopea, juopotteleva nuori ukko, joka vapisi päästä
jalkoihin ja puhui niin epäselvästi, kuin olisi osa rahoista, joista hän
kerskaili, joutunut hänen suuhunsa ja tarttunut sinne; tämä nuori
mies ei kyennyt astumaan ainoatakaan itsenäistä askelta elämässä,
mutta suojeli sisartansa, itsekkäästi rakastamaansa sisarta (tämä
kielteinen hyve onnettomalla, kovaosaisena Tipillä aina oli ollut), ja
salli hänen johtaa itseänsä. Siellä oli hienoon surupukuun puettu mrs
Merdle — ensimmäinen huntu oli kenties revitty kappaleiksi
surunpuuskassa, mutta saanut joka tapauksessa sijalleen
erinomaisen pukevan hunnun Pariisista — joka taisteli Fannyn kanssa
tuuma tuumalta, asettuen lohduttomine povineen joka hetki hänen
tiellensä. Siellä oli poloinen mr Sparkler, joka ei tiennyt, kuinka
ylläpitäisi rauhaa molempien naisten välillä, mutta joka lausui
nöyrästi mielipiteenään, etteivät he voisi keksiä parempaa kuin sopia
siitä, että he molemmat olivat huomattavan hienoja naisia, joissa ei
kummassakaan ollut mitään joutavaa hölynpölyä; tämän lempeän
neuvon tähden he yksimielisinä julmalla tavalla hyökkäsivät hänen
kimppuunsa. Sitten siellä vielä oli mrs General, joka ulkomailta
kotiuduttuaan lähetti joka toinen päivä papu-prisma-kirjeen, pyytäen
suositusta yhteen tai toiseen toimeen. Tästä verrattomasta rouvasta
on lopuksi mainittava, ettei maailmassa ole ollut toista naista, jonka
yli-inhimillisestä sopivaisuudesta mihin avonaiseen toimeen tahansa
niin moni (lämpimistä suosituksista päättäen) on ollut täysin varma
ja jolla oli niin huono onni, ettei kukaan hänen laajassa, hienojen,
innokkaiden ihailijoiden täyttämässä piirissään milloinkaan sattunut
tarvitsemaan häntä mihinkään toimeen.

Kuuluisan mr Merdlen kuoleman jälkeisen romahduksen jälkeen


eivät monet tärkeät henkilöt voineet päättää, pitikö heidän hylätä
mrs Merdle vai lohduttaa häntä. Koska he kuitenkin huomasivat
oman asemansa varmuudelle edullisimmaksi myöntää hänen tulleen
julmasti petetyksi, tekivät he armollisesti tämän myönnytyksen ja
tunsivat hänet edelleen. Siitä seurasi, että mrs Merdleä hienona,
hyvän kasvatuksen saaneena naisena, joka oli joutunut raakalaisen
petosten uhriksi (sillä mr Merdlestä oltiin perinpohjin selvillä heti kun
varmistuttiin hänen kukkaronsa tyhjyydestä), oli säätynsä puolelta
tehokkaasti kannatettava, säädyn kunnian tähden. Hän palkitsi
tämän uskollisuuden antaen ymmärtää olevansa katkerampi kuin
kukaan muu kuolleen petturin varjolle; näin läpäisi hän tämän
kiirastulen, selviytyen siitä viisaana naisena, ja esiintyi erinomaisesti
edukseen.

Mr Sparklerin virka verukevirastossa oli onneksi yksi niitä hyllyjä,


jonne päästyään herrasmies katsotaan sijoitetuksi loppuiäkseen, ellei
ole syytä nostaa häntä barnaclelaisella vipukoneella vieläkin
tuottavampaan korkeuteen. Niinpä tämä isänmaanpalvelija pysyi
uskollisena väreilleen (neljän palkkaneljänneksen lipulle) ja oli
todellinen Nelson innossaan naulata niitä mastoonsa. Hänen
urhoollisuutensa kustannuksella varustautuivat mrs Sparkler ja mrs
Merdle — he asuivat eri huoneistoissa pienessä hienossa
epämukavuuden temppelissä, josta edellisen päivän liemen ja
ajurihevosten haju oli yhtä lähtemätön kuin kuolema maailmasta —
ainaisina kilpailijoina seuraelämän tantereelle. Ja Pikku Dorrit,
katsellessaan kaiken tämän kehitystä, ei voinut muuta kuin
levottomana aprikoida, mihin tämän hienon asunnon kolkkaan
Fannyn lapset aikanaan sullottaisiin ja kuka huolehtisi näistä
syntymättömistä pienistä uhreista.

Arthur oli vielä liian heikko, jotta hänen kanssansa olisi voinut
puhua mistään levottomuutta herättävistä asioista, ja hänen
paranemisensa riippui suuresti siitä, että hän heikkoudessaan sai
nauttia rauhasta; sentähden Pikku Dorritin ainoana turvana tänä
raskaana aikana oli mr Meagles, joka oli yhä ulkomailla, mutta Pikku
Dorrit oli kirjoittanut hänelle hänen tyttärensä välityksellä heti
nähtyään Arthurin Marshalseassa ja sitten aina uskonut hänelle
levottomuutensa ja varsinkin erään huolestuttavan asian. Tästä
riippui, että mr Meagles yhä viipyi ulkomailla eikä palannut kotiin
tuomaan lohdutusta Marshalseaan.

Kertomatta tarkalleen Rigaudin käsiin joutuneiden asiapaperien


sisältöä oli Pikku Dorrit maininnut asiasta mr Meaglesille ylimalkaisin
piirtein ja myöskin kertonut hänelle miehen lopun. Vaa'an ja
rahalapion ääressä saavutettu varovaisuus osoitti kohta mr
Meaglesille, kuinka tärkeätä oli ottaa selko alkuperäisistä papereista;
sentähden hän kohta kirjoitti Pikku Dorritille parhaansa mukaan
lieventäen tämän huolia niistä asiakirjoista ja lisäten, että hän ei
aikonut palata Englantiin »ylittämättä päästä niiden jäljille».

Näihin aikoihin oli mr Henry Gowan päässyt selville siitä, että


hänen olisi hauskempi olla tuntematta Meaglesejä. Hän oli siksi
hienotunteinen, ettei antanut vaimollensa mitään määräyksiä tässä
suhteessa; mutta mr Meaglesille hän lausui huomanneensa, etteivät
he henkilökohtaisesti sopineet yhteen, ja arvelevansa, että olisi hyvä,
jos he — kohteliaasti ilman minkäänlaisia kohtauksia tai muuta
senkaltaista — sopisivat siitä, että he olivat parhaita ystäviä, mutta
pysyisivät erossa. Mr Meagles-raukka, joka hyvin oli huomannut,
ettei hän edistänyt tyttärensä onnea joutuu alla alati halveksivan
kohtelun alaiseksi hänen läsnäollessaan, vastasi: »Hyvä, Henry! Sinä
olet Petini mies; sinä olet luonnon järjestyksen mukaan syrjäyttänyt
minut; jos tahdot niin, niin olkoon minun puolestani!» Tämä
järjestely toi mukanaan sen edun, jota Henry Gowan tuskin oli
odottanut, että nimittäin sekä mr että mrs Meagles olivat entistä
anteliaampia tytärtänsä kohtaan nyt ollessaan yhteydessä vain
hänen ja hänen pienen lapsensa kanssa ja että hänen ylvään
henkensä ei tarvinnut olla alentavasti tietoinen siitä, mistä rahat
tulivat, joita hänellä nyt oli runsaammin kuin ennen.

Tällaisten olojen vallitessa tarttui mr Meagles tietysti innokkaasti


tarjolla olevaan tehtävään. Hän sai tyttäreltänsä tietää, mitä eri
kaupunkeja Rigaud oli läsnäolollansa rangaissut ja missä hotelleissa
asunut muutama aika takaperin. Hän otti nyt tehtäväkseen käydä
salaisesti ja kiireesti kaikissa näissä ja tavatessaan jossakin
maksamatta jätetyn laskun ja pantiksi jätetyn lippaan tai
paperikäärön maksaa laskun ja lunastaa lippaan tai käärön.

Ilman muita seuralaisia kuin äiti, lähti mr Meagles tälle


toivioretkelle ja joutui lukemattomiin seikkailuihin. Vähimpiä
vaikeuksia ei ollut se, ettei hän milloinkaan ymmärtänyt, mitä hänelle
sanottiin, ja että ihmiset, joilta hän tiedusteli jotakin, eivät
ymmärtäneet mitä hän sanoi heille. Tästä huolimatta oli hän
järkkymättömän varma siitä, että englanninkieli jollakin tavoin oli
koko maailman emäkieli, mutta että ihmiset olivat liian typeriä
ymmärtääkseen sitä, ja piti laveita puheita ravintolanisännille, selitti
äänekkäästi ja tarkoin monimutkaisempia asioita eikä välittänyt
vähääkään maan asukasten omalla kielellään antamista vastauksista,
ne kun hänen mielestään olivat »pelkkää pötyä». Toisinaan kutsuttiin
avuksi tulkki, jota mr Meagles puhutteli niin aito englantilaisella
kielellä, että tämä heti huomasi kykenemättömyytensä ja väistyi —
mikä vain pahensi asiaa. Mutta toiselta puolen on epätietoista,
menettikö hän paljoakaan tämän kautta, sillä vaikkei hän löytänyt
mitään jälkeenjäänyttä omaisuutta, löysi hän niin paljon velkoja ja
epäedullisia tietoja siihen ainoaan nimeen liittyvinä, jonka hän
saattoi tehdä ymmärretyksi, että hän melkein joka paikassa sai
ansaitsemattoman syytösryöpyn niskaansa. Kokonaista neljä kertaa
kutsuttiin poliisi paikalle ja mr Meagles esitettiin hänelle huijarina,
tyhjäntoimittajana ja varkaana; kaikki nämä häväistykset kesti hän
tyynesti (hän kun ei ymmärtänyt niistä sanaakaan), ja kun hänet
kaikkea muuta kuin kunnioittavasti saatettiin laivoihin ja
postivaunuihin, jotta hänestä päästäisiin irti, asteli hän vain, äidin
käsivarsi kainalossaan, jutellen koko ajan, kuten hilpeä, rehellinen
brittiläinen ainakin.

Mutta omalla kielellään ja älyllään oli mr Meagles selväjärkinen,


viisas ja hellittämätön mies. Kun hän etsintäretkellään oli, kuten hän
sanoi, »puskeutunut» Pariisiin saakka, vielä vähääkään
onnistumatta, ei hän suinkaan ollut allapäin eikä toivoton. »Kuta
lähemmäksi Englantia joudun seuratessani hänen jälkiänsä, näetkös,
äiti», selitti hän, »sitä suurempi mahdollisuus on löytää ne paperit,
löydänpä ne sitten tai olen löytämättä. Sillä järkevinhän on otaksua,
että hän tahtoi sijoittaa ne englantilaisten sormien ulottuvilta, mutta
kuitenkin niin lähelle, että hän itse helposti sai ne käsiinsä; eikös
niin, äiti?»

Pariisissa sai mr Meagles Lontoosta kirjeen, joka oli odotellut


häntä siellä; siinä Pikku Dorrit kertoi, että hän oli voinut puhella
muutaman minuutin mr Clennamin kanssa siitä miehestä, joka ei
enää ollut elävien joukossa, että hän oli kertonut mr Clennamin
ystävän mr Meaglesin olevan kotimatkalla ja tulevan pian tapaamaan
häntä ja että hän eräiden seikkojen tähden halusi joitakin tietoja
Rigaud-Blandoisista, jolloin mr Clennam oli pyytänyt häntä
kertomaan mr Meaglesille, että miss Wade, joka asui Calaisissa sen
ja sen kadun varrella, oli tuntenut hänet. »Oho!» sanoi mr Meagles.

Niin pian tämän jälkeen kuin postivaunu-aikoina oli mahdollista


soitti mr Meagles raihnaisen portin raihnaista kelloa; portti aukesi
naristen, ja pimeässä käytävässä seisoi talonpoikaisvaimo sanoen:
»Täällä! Siir! Kuka?» Kuullessaan tämän puhuttelun jupisi mr
Meagles itsekseen, että calaisilaiset tuntuivatkin olevan järkevää
väkeä, jotka näyttivät tietävän mitä muut ja he itse tahtoivat. »Miss
Wade, ystäväni», vastasi hän, ja sitte hänet vietiin miss Waden
puheille.

»Siitä on jo kulunut aikaa, kun viimeksi tapasimme», sanoi hän


kakistellen kurkkuansa; »toivottavasti olette voinut hyvin, miss
Wade?»

Toivomatta, että mr Meagles tai kukaan muu oli voinut hyvin, miss
Wade kysyi, mikä tuotti hänelle kunnian tavata mr Meaglesiä taas.
Tällä välin vieras katseli ympärillensä huoneessa, huomaamatta
missään
lippaan tapaista.

»Niin, totta puhuen, miss Wade», aloitti mr Meagles rattoisasti,


ovelasti, miltei mielistelevästi, »te voisitte luoda valoa erääseen
nykyisin varsin hämärään asiaan. Kaikki meidän väliset menneet
ikävät selkkaukset pysyvät kai menneinä, toivottavasti. Niitä ei nyt
voi korjata. Muistattehan tyttäreni? Ajat muuttuvat! Hän on nyt äiti!»

Viattomuudessaan aloitti mr Meagles pahimmasta päästä. Hän


vaikeni, odottaen jotakin mielenkiinnon ilmausta, mutta turhaan.

»Tästähän ette tullut puhumaan?» huomautti toinen


kylmäkiskoisen äänettömyyden jälkeen.

»En, en», vastasi mr Meagles. »En. Arvelin, että ystävällisyytenne


—»
»Luulin tietävänne», keskeytti miss Wade hymyillen, »ettei minun
ystävällisyyttäni voi ottaa lukuun».

»Älkää sanoko niin», väitti mr Meagles, »teette itsellenne


vääryyttä.
Joka tapauksessa, käykäämme asiaan.» Sillä hän huomasi, ettei hän
ollut
voittanut mitään kulkemalla kiertoteitä. »Olen kuullut ystävältäni
Clennamilta, joka ikävä kyllä on hyvin sairas —»

Hän vaikeni taas, mutta toinenkin pysyi vaiti.

»— että tunsitte erään Blandois-nimisen miehen, joka äskettäin


kuoli Lontoossa kauhean tapaturman kautta. Ymmärtäkää minut
oikein. Tiedän, että tunsitte hänet vain satunnaisesti», sanoi mr
Meagles, taitavasti torjuen kiukunpurkauksen, jonka näki olevan
tulossa. »Tiedän varsin hyvin, että tuttavuus oli aivan satunnainen.
Mutta kysymys on siitä», mr Meaglesin ääni muuttui taas rattoisaksi
ja rauhoittavaksi, »jättikö hän viime Englannin-matkallaan
asiapaperilippaan tai paperikäärön tai minkäänlaisia papereita teille,
pyytäen teiltä lupaa jättää ne tänne talteen lyhyeksi aikaa, kunnes
hän tarvitsisi niitä.»

»Siitäkö on kysymys? Ja kuka kysyy?»

»Minä», vastasi mr Meagles. »Enkä vain minä, vaan Clennam ja


moni muu. Minä olen ihan varma», jatkoi mr Meagles, jonka sydän
oli tulvillaan Petiä, »ettei teillä voi olla mitään epäystävällisiä tunteita
tytärtäni kohtaan; se on mahdotonta. No niin, hänkin kysyy sitä, se
kun koskee läheisesti hänelle rakasta ystävää. Tässä nyt olen ja
sanon suoraan, että tästä on kysymys, ja kysyn: Jättikö hän
papereita?»
»Totisesti, näyttää siltä kuin kaikki, jotka tiesivät jotakin tästä
miehestä — otin hänet kerran elämässäni palvelukseeni, maksoin ja
lähetin hänet sitte menemään — olisivat valinneet minut
kysymystensä maalitauluksi!»

»Älkää toki», rauhoitti mr Meagles, »älkää. Älkää toki pahastuko,


sehän on maailman yksinkertaisin kysymys, johon kuka hyvänsä voi
vastata. Mainitsemani asiapaperit eivät olleet hänen omaansa, vaan
anastettuja; niitä säilyttävä viaton henkilö voisi joskus saada niistä
ikävyyksiä, ja ne, joille ne kuuluvat, tiedustelevat niitä. Matkallaan
Lontooseen poikkesi hän Calaisissa ja hänellä oli syitä, joiden tähden
hän ei voinut ottaa niitä mukaansa, joiden tähden hän tahtoi saada
ne ulottuvillensa ja joiden tähden hän ei uskaltanut jättää niitä
vertaistensa haltuun. Jättikö hän ne tänne? Vakuutan, että jos vain
tietäisin miten minun tulisi menetellä, niin panisin parhaani
välttääkseni suututtamasta teitä. Teen kysymykseni
henkilökohtaisesti, mutta siinä ei ole mitään henkilökohtaista. Voisin
tehdä sen kenelle hyvänsä toiselle; olen tehnyt sen jo monelle.
Jättikö hän ne tänne? Jättikö hän jotakin tänne?»

»Ei.»

»Siis, ikävä kyllä, ette tiedä niistä mitään, miss Wade?»

»En tiedä niistä mätään. Olen nyt vastannut käsittämättömään


kysymykseenne. Hän ei jättänyt niitä tänne enkä minä tiedä mitään
niistä.»

»Vai niin!» sanoi mr Meagles nousten seisomaan. »Se on ikävää.


Se ei siis onnistunut nytkään. Toivon, etten pahasti ole suututtanut
teitä. — Tattycoram voi kai hyvin, miss Wade?»
»Harriet? Kyllä!»

»Joko taas sanoin jotakin loukkaavaa», ihmetteli mr Meagles


saatuaan tämän oikaisun. »Täällä näyn aina joutuvan sanomaan
jotakin sellaista. Ehkäpä, jos olisin ajatellut asiaa kahdesti, en
olisikaan antanut hänelle tuollaista outoa nimeä. Mutta kun tahtoo
olla ystävällinen ja leikillinen lasten kanssa, ei tule ajatelleeksi asioita
moneen kertaan. Hänen vanha ystävänsä lähettää hänelle
ystävälliset terveisensä, jos katsotte sopivaksi viedä ne perille.»

Miss Wade ei vastannut tähän mitään, ja mr Meagles käänsi


rehelliset kasvonsa pois synkästä huoneesta, jossa ne paistoivat kuin
aurinko, ja palasi hotelliin, jonne oli jättänyt äidin ja jossa hän kertoi:
»Sain selkääni, äiti, ei mitään tuloksia!» Sitte hän käänsi ne
Lontooseen menevään postilaivaan, joka matkusti yötä myöten, ja
sitte Marshalseaan.

Uskollinen John oli virantoimituksessa, kun isä ja äiti Meagles


ilmestyivät hämärissä portille. Miss Dorrit ei ollut siellä silloin, kertoi
hän, mutta hän oli ollut siellä aamulla ja tuli säännöllisesti joka ilta.
Mr Clennam toipui vähitellen, ja Maggy ja mrs Plornish ja mr Baptist
hoitivat häntä vuorotellen. Miss Dorrit palaisi varmasti sinä iltana
ennen kellon soimista. Yläkerrassa oli huone, jonka vankilanjohtaja
oli vuokrannut hänelle ja jossa he, jos halusivat, voisivat odottaa
häntä. Peläten, että saattaisi olla vahingollista Arthurille, jos he
ilmestyisivät hänen luoksensa valmistuksetta, otti mr Meagles
vastaan tarjouksen; ja he jäivät huoneeseen odottamaan ja
katselemaan sen ristikkoikkunasta vankilaan.

Vankilan rajoitettu ala vaikutti mrs Meaglesiin niin, että hän alkoi
itkeä, ja mr Meaglesiin niin, että hän alkoi läähättää ja haukkoa
ilmaa. Hän käveli edestakaisin huoneessa läähättäen ja pahentaen
asiaa hermostuneesti löyhyttelemällä kasvojaan nenäliinalla.
Kääntyessään aukenevaan oveen päin hän huudahti:

»Oh! Hyvä Jumala! Tämä ei ole miss Dorrit! Äiti, katsos,


Tattycoram!»

Hän juuri. Ja Tattycoramin käsissä oli kaksi jalkaa leveä ja kaksi


jalkaa pitkä rauta-arkku. Sellaisen oli Affery Flintwinch
ensimmäisessä unessaan nähnyt yösydännä vaeltavan talosta
miehensä kaksoisveljen kainalossa. Tämän arkun laski Tattycoram
lattialle entisen isäntänsä jalkoihin; sen viereen heittäytyi Tattycoram
polvilleen ja takoi sitä nyrkeillään ja huusi puoliksi haltioissaan,
puoliksi epätoivoisena, puoliksi nauraen, puoliksi itkien: »Antakaa
anteeksi, rakas isäntä, ottakaa minut takaisin, rakas emäntä, tässä
se on!»

»Tatty!» huudahti mr Meagles.

»Se, mitä etsitte!» selitti Tattycoram. »Tässä se on! Minut


lähetettiin viereiseen huoneeseen, jotta en näkisi teitä. Kuulin teidän
kysyvän tätä, kuulin hänen sanovan, ettei hän ollut saanut sitä; minä
olin ollut läsnä, kun mies jätti sen sinne, ja minä otin sen illalla ja
toin tänne. Tässä se on!»

»Mutta, tyttöni, kuinka pääsit Kanaalin poikki?» kysyi mr Meagles


entistä hengästyneempänä.

»Tulin samassa laivassa kuin tekin, istuin vaatteisiini kääriytyneenä


laivan toisessa päässä. Kun te satamassa otitte vaunut, otin minä
toiset ja seurasin teitä tänne. Hän ei olisi ikinä luovuttanut sitä,
senjälkeen kun kerroitte, kuinka välttämättä sitä haluttiin; hän olisi
mieluummin upottanut sen mereen tai polttanut sen. Mutta tässä se
on!»

Kuinka hän olikaan täynnä hehkua ja innostusta, kun hän


huudahti:
»Tässä se on!»

»Hän ei tahtonut ottaa arkkua vastaan, se minun on sanottava


hänen eduksensa, mutta mies jätti sen, ja minä tiedän, että miss
Wade sen jälkeen, mitä te sanoitte, ja kiellettyhän tietävänsä asiasta
mitään, ei olisi ikinä luovuttanut sitä. Mutta tässä se on! Rakas
isäntä, rakas emäntä, ottakaa minut takaisin ja antakaa minulle taas
vanha rakas nimeni! Antakaa tämän puhua puolestani. Tässä se on!»

Isä ja äiti Meagles eivät milloinkaan paremmin ansainneet


nimeänsä kuin ottaessaan takaisin suojaansa rajun, itsepintaisen
löytölapsensa.

»Oi kuinka olen ollut kurja!» huudahti Tattycoram itkien entistä


enemmän tämän jälkeen, »aina onneton, aina katuva. Pelkäsin häntä
ensi hetkestä kun näin hänet. Tiesin, että hän oli saanut
vaikutusvaltaa minuun, kun hän niin hyvin tunsi minussa asuvan
pahan. Se oli mielipuolisuutta minussa, ja hän saattoi herättää sen
milloin vain halusi. Tässä tilassa ollessani ajattelin aina, että kaikki
ihmiset olivat minua vastaan syntyperäni tähden, ja kuta
ystävällisempiä he olivat minua kohtaan, sitä katkerammaksi kävin.
Kuvittelin mielessäni, että he kerskuivat kiusallani ja koettivat
herättää minussa kateutta heitä kohtaan, vaikka tiedän — vaikka
tiesin silloinkin, kun vain tahdoin — etteivät he ajatelleetkaan
sellaista. Ja kaunis nuori emäntäni ei olekaan niin onnellinen kuin
hänen pitäisi olla, ja minä olen jättänyt hänet. Millaisena kurjana
ilkiönä hän pitäneekään minua! Mutta puhuttehan puolestani hänelle
ja pyydätte häntä antamaan minulle anteeksi, kuten te molemmat
olette antaneet! Sillä en ole enää niin paha kuin ennen», puolustihe
Tattycoram, »paha kylläkin, mutta niin paha kuin sillein en
todellakaan. Olen koko ajan nähnyt miss Wadessa itseni kypsyneenä
— kääntäen kaikesta nurjan puolen näkyville, selittäen kaiken hyvän
pahaksi. Olen koko ajan nähnyt, kuinka hänen paras huvinsa oli
pitää minua yhtä kurjana, epäluuloisena itsekiduttajana kuin hänkin
on. Ei silti, että hänellä siitä oli suurtakaan vaivaa», huudahti
Tattycoram, puhjeten vielä kerran epätoivoiseen itkuun, »sillä olin jo
mahdollisimman paha. Tarkoitan vain, että kaiken kokemani jälkeen
en toivoakseni enää milloinkaan ole niin paha, vaan että vähitellen
paranemistani paranen. Koetan kaikin voimin. En pysähdy
viiteenkolmatta, sir. Lasken viisikolmatta sataa, viisikolmatta
tuhatta!»

Taas ovi avautui, Tattycoram vaikeni, ja Pikku Dorrit astui sisään,


jolloin mr Meagles ylpeänä ja iloisena ojensi hänelle arkun. Pikku
Dorritin lempeät kasvot kirkastuivat kiitollisuudesta ja onnesta.
Salaisuus oli nyt tallessa! Hän saattoi pitää itseänsä koskevan osan
omana tietonansa; Clennam ei milloinkaan saisi tietää hänen
menetyksestään, mutta aikaa myöten kyllä sen, millä oli merkitystä
hänelle itselleen. Kaikki oli ohi, anteeksiannettu, unohdettu!

»No niin, rakas miss Dorrit», sanoi mr Meagles, »minä olen


liikemies — olen ainakin ollut — ja aion heti ryhtyä toimiin. Voinko
saada tavata Arthuria tänä iltana?»

»Arvelen, ettei tänä iltana. Menen hänen huoneeseensa


katsomaan, kuinka hän voi. Mutta kenties on parempi puhua hänen
kanssansa vasta huomenna.»
»Olen aivan samaa mieltä, rakkaani», myönsi mr Meagles, »ja
siksi en ole tullut lähemmäksi häntä kuin tähän synkkään
huoneeseen. Näin ollen en tapaa häntä vähään aikaan. Mutta minä
selitän asian teille palattuanne.»

Pikku Dorrit lähti huoneesta. Mr Meagles, joka katseli


ikkunaristikon läpi, näki hänen astuvan alapuolella olevasta
porttihuoneesta vankilan pihaan. Hän sanoi lempeästi: »Tattycoram,
tule vähän tänne, tyttöseni.»

Tyttö tuli ikkunan ääreen.

»Sinä näit tämän nuoren naisen, joka äsken juuri oli täällä — tuon
pienen, tyynen, hennon olennon, joka kävelee tuolla, Tatty. Katso,
ihmiset väistyvät hänen tieltänsä päästääkseen hänet ohitseen.
Miehet — katsos noita köyhiä ryysyistä olentoja — nostavat
kohteliaasti lakkiansa hänelle, ja nyt hän häviää tuon oven taakse.
Sinä näet hänet, Tattycoram?»

»Näen kyllä, sir.»

»Olen kuullut kerrottavan, Tatty, että häntä ennen aina nimitettiin


tämän paikan lapseksi. Hän on syntynyt täällä ja elänyt täällä monta
vuotta. Minä en voi hengittää täällä. Synkkä syntymä- ja
asuinpaikka, Tattycoram?»

»On todella, sir.»

»Jos hän aina olisi ajatellut itseänsä ja kuvitellut mielessään, että


kaikki vankilassakävijät halveksivat ja pilkkasivat häntä sentähden,
niin hän olisi viettänyt kiusallista ja luultavasti hyödytöntä elämää.
Mutta minä olen kuullut kerrottavan, Tattycoram, että hänen
nuoruutensa on kulunut toimeliaassa alistuvaisuudessa, hyvyydessä
ja jalossa toisten palvelemisessa. Sanonko, mitä hänen silmänsä aina
ovat katselleet, niin että ne ovat saaneet sen ilmeen, jonka näit
niissä?»

»Jos suvaitsette, sir.»

»Velvollisuutta, Tattycoram. Aloita se aikaisin ja täytä se hyvin, ja


silloin ei mikään entisyys, ei syntyperämme eikä asemamme
puolelta, voi todistaa meitä vastaan Kaikkivaltiaan tai
omantuntomme edessä.»

He jäivät ikkunan ääreen; äiti yhtyi heihin, ja yhdessä he


säälittelivät vankeja, kunnes Pikku Dorrit palasi. Hän ilmestyi pian
huoneeseen ja ehdotti, ettei sinä iltana käytäisi Arthurin luona, jonka
hän oli tavannut tyynenä ja rauhallisena.

»Hyvä!» virkkoi mr Meagles hilpeästi. »Epäilemättä se on parasta.


Jätän siis terveiseni hänen suloisen hoitajansa huomaan ja tiedän,
että hän voi parhaiten viedä ne perille. Olen poissa taas
huomisaamuna.»

Pikku Dorrit tiedusteli ihmeissään, mihin hän aikoi lähteä.

»Hyvä ystävä», vastasi mr Meagles, »minä en voi elää


hengittämättä.
Tämä paikka salpaa niin henkeäni, etten ikinä toinnu siitä, ennenkuin
Arthur on päässyt pois täältä.»

»Kuinka se voi aiheuttaa teille matkan huomisaamuna?»

»Minäpä selitän», virkkoi mr Meagles. »Tänä iltana me kaikki


kolme menemme City-hotelliin. Huomisaamuna äiti ja Tattycoram
lähtevät Twickenhamiin, jossa mrs Tickit istuu vierashuoneen
ikkunassa tohtori Buchanin ääressä ja luulee heidän ilmestyessään
näkevänsä aaveita, ja minä lähden ulkomaille etsimään Doycea.
Meidän täytyy saada Dan tänne. Niin, rakkaani, tiedättekös, ei
kannata kirjoitella, suunnitella ja mietiskellä sinne ja tänne näin
pitkin välimatkoin ja epämääräisin väliajoin, vaan meidän täytyy
saada Doyce tänne. Otan huomisaamuna tehtäväkseni noutaa
Doycen tänne. Ei merkitse minulle mitään lähteä etsimään häntä.
Minä olen vanha tottunut matkustelija ja kaikki vieraat kielet ja tavat
ovat minulle samantekeviä — en ole milloinkaan ymmärtänyt mitään
niistä. Sentähden en joudu minkäänlaisiin vaikeuksiin. Minun täytyy
heti lähteä, se on selvää, sillä en voi elää, ellen saa hengittää
vapaasti, ja minä en voi hengittää vapaasti ennenkuin Arthur on
poissa Marshalseasta. Minä olen tukehtumaisillani nyt ja kykenen
tuskin saamaan kaiken tämän sanotuksi j; kantamaan tämän
kallisarvoisen laatikon portaita alas.»

He pääsivät kadulle, Meagles kantaen arkkua, kun kello alkoi


soida. Pikku Dorritilla ei ollut vaunuja odottamassa, mikä kovin
ihmetytti mr Meaglesiä. Hän kutsui ajurin ja sijoitti Pikku Dorritin
vaunuihin ja laatikon hänen viereensä. Ilossa ja kiitollisuudessaan
Pikku Dorrit suuteli mr Meaglesin kättä.

»Tuosta en pidä, ystäväni», torjui tämä. »Se on vastoin


oikeudentuntoani, että te osoitatte tällaista kunnioitusta minulle —
Marshalsean portilla.»

Pikku Dorrit kurottautui ylemmäs ja suuteli häntä poskelle.

»Te muistutatte minulle entisiä aikoja», sanoi mr Meagles,


muuttuen yhtäkkiä alakuloiseksi, »mutta Pet rakastaa häntä ja
peittää hänen virheensä ja luulee, ettei kukaan näe niitä — ja hän on
todella ylhäistä sukua ja hyvästä perheestä!»

Tämä oli hänen ainoa lohdutuksensa menetettyään tyttärensä, ja


jos hän antoi sille mahdollisimman suuren merkityksen, niin kukapa
moittisi häntä siitä!
SEITSEMÄSKYMMENES LUKU

Loppu

Kauniina syyspäivänä istui Marshalsean vanki, joka oli heikko,


mutta muuten parantunut, kuunnellen ääntä, joka luki hänelle.
Kauniina syyspäivänä, jolloin kultaiset vainiot olivat niitetyt ja
uudelleen kynnetyt, jolloin kesän hedelmät olivat kypsyneet ja
hävinneet, jolloin ahkerat sormet olivat poimineet vihreät humalarivit
tyhjiksi, jolloin omenat heloittivat ruskeanpunaisina
hedelmätarhoissa ja pihlajanmarjat purppuranpunaisina
kellastuneessa lehvistössä. Metsissä näkyi jo siellä täällä tulevan
kovan talven tuikahduksia, oksien välissä kun oli outoja aukeamia,
joiden läpi näköala loisti selväpiirteisenä ja kirkkaana, vapaana kesän
uneliaasta autereesta, joka oli leijaillut sen yllä luumupuiden
kukkiessa. Niin ei myöskään meri rannalta katsoen enää päilynyt
unisena kesälämmössä, vaan sen tuhannet säkenöivät silmät olivat
auki, ja sen koko pinta oli riemuisessa liikkeessä rannan vilpoisesta
hiekasta alkaen pieniin purjeisiin asti, jotka liitelivät taivaanrannalla
kuin syksyn välittämät puista lentelevät lehdet.
Muuttumattomana, kuivana, värittömänä seisoi vankila katsellen
välinpitämättömänä kaikkia vuodenaikoja köyhyyden ja huolten
leimaamilla kasvoillaan heijastamatta sädettäkään kaikesta
ympäröivästä kauneudesta. Kukkipa kesä kuinka kauniina hyvänsä
ympärillä, sen tiilet ja ristikkotangot kantoivat aina samaa kuollutta
kukintaa. Kuitenkin, kuunnellessaan lukevaa ääntä, kuuli Clennam
siinä kaiken sen hyvän, mitä suuri luonto antaa ihmiselle, kuuli ne
rauhoittavat säveleet, joita se laulaa hänelle. Vain tämän äidin
polven ääressä hän oli seissyt pikku lapsena suurine toiveineen,
saaden osakseen sitä hellyyden ja nöyryyden satoa, joka kasvaa
aikaisin kylvetystä mielikuvituksen viljelyksestä, seissyt mylviviltä
myrskyiltä suojaavien tammien turvissa, joiden jykevät juuret
työntyvät lastenkamarissa itävistä terhoista. Tässä äänessä, joka luki
hänelle, hän kuuli kaikuja tällaisista ennen kokemastaan tunteista,
kaikuja jokaisesta säälivästä ja hellästä kuiskauksesta, joka oli
hiipinyt hänen luoksensa hänen elämiänsä varrella.

Kun ääni vaikeni, pani hän käden silmillensä jupisten, että valo
huikaisi niitä.

Pikku Dorrit laski kirjan kädestään ja nousi tyynesti vetääkseen


uutimet ikkunan eteen. Maggy istui entisellä paikallaan käsityönsä
ääressä. Valo himmeni, ja Pikku Dorrit siirsi tuolinsa lähemmäksi
Arthuria.

»Tämä loppuu pian, rakas mr Clennam. Mr Doycen kirjeet teille


ovat täynnä ystävyyttä teitä kohtaan ja mr Rugg sanoo, että hänen
saamansa kirjeet ovat täynnä apua ja että kaikki (kun ensimmäinen
suuttumus on ohi) ovat niin hienotunteisia ja puhuvat niin hyvää
teistä, että kaikki kyllä pian taas päättyy.»

»Rakas tyttö. Rakas ystävä. Hyvä enkelini!»


»Te kehutte minua liiaksi. Ja kuitenkin tunnen itseni niin
onnelliseksi kuullessani teidän puhuvan näin lämpimästi ja —
tuntiessani» — Pikku Dorrit katsoi hänen silmiinsä — »ja tuntiessani,
kuinka vilpittömästi tarkoitatte, mitä sanotte, etten voi kieltää teitä
siitä».

Clennam nosti hänen kätensä huulilleen.

»Te olette ollut täällä monen monta kertaa, vaikken ole nähnyt
teitä,
Pikku Dorrit?»

»Kyllä, olen ollut täällä toisinaan, vaikken ole tullut sisään.»

»Hyvin usein?»

»Jotenkin usein.»

»Joka päivä?»

»Lienen käynyt täällä», vastasi Pikku Dorrit epäröiden, »vähintäin


kahdesti joka päivä».

Arthur olisi voinut päästää pienen käden irti, suudeltuaan sitä taas
lämpimästi, ellei se pehmeästi pysyen paikallaan olisi näyttänyt
pyytävän, että sitä edelleen pidettäisiin. Hän otti sen molempien
käsiensä väliin, ja se jäi hiljaa lepäämään hänen rinnalleen.

»Rakas Pikku Dorrit, minun vankeuteni ei ole ainoa, mikä pian


loppuu.
Teidän uhrautumisenne täytyy myöskin loppua. Meidän täytyy oppia
eroamaan taas ja kulkemaan kumpikin omaa tietämme kaukana
toisistamme.
Ettehän ole unohtanut, mitä puhelimme, kun palasitte tänne?»

»Oi en, en ole unohtanut sitä. Mutta jotakin on — olettehan oikein


reipas tänään, ettekö olekin?»

»Oikein reipas.»

Käsi, jota hän piteli, hiipi hiukan lähemmäksi hänen kasvojansa.

»Oletteko kyllin reipas kuulemaan, kuinka suuren omaisuuden olen


saanut?»

»Olen hyvin iloinen saadessani kuulla sen. Mikään rikkaus ei ole


liian suuri Pikku Dorritille.»

»Olen kärsimättömästi odottanut saadakseni kertoa teille siitä.


Olen ikävöinyt saadakseni puhua siitä kanssanne. Onko ihan varmaa,
ettette ota sitä vastaan?»

»En ikinä!»

»Onko myös varmaa, ettette ota puoltakaan siitä?»

»En ikinä, rakas Pikku Dorrit!»

Kun hän äänettömänä katsoi Arthuriin, oli hänen rakastavissa


kasvoissaan jotakin, mitä toinen ei täysin ymmärtänyt, jotakin, mikä
olisi voinut milloin tahansa puhjeta kyyneliin, mutta samalla jotakin
onnellisia ja ylpeää.

»Varmaan olette pahoillanne, kun kerron teille Fannystä. Fanny-


raukka on menettänyt kaikki. Hänellä ei ole mitään muuta kuin
miehensä tulot. Kaikki, mitä isä antoi hänelle hänen mennessään
naimisiin, on menetetty, samoin kuin teidän rahanne ovat menetetyt.
Ne oli uskottu samoihin käsiin, ja kaikki on mennyttä.»

Arthur oli enemmän järkytetty kuin hämmästynyt tästä. »Toivein,


ettei olisi käynyt niin pahasti, mutta olen pelännyt suurta menetystä
sillä suunnalla, koska tiesin hänen miehensä ja petturin keskinäisen
suhteen.»

»Niin. Kaikki on mennyttä. Olen hyvin pahoillani Fannyn tähden,


niin kovin pahoillani Fanny-raukan tähden. Ja poloisen veljeni tähden
niinikään!»

»Oliko hänenkin omaisuutensa samoissa käsissä?»

»Oli! Ja kaikki on mennyttä. — Kuinka suuren arvelette oman


rikkauteni olevan?»

Kun Arthur katsoi häneen kysyvästi, aavistuksen herätessä hänen


mielessään, veti hän pois kätensä ja painoi kasvonsa siihen
paikkaan, jossa se oli levännyt.

»Minä en omista yhtään mitään. Olen yhtä köyhä kuin täällä


eläessäni. Kun isä kävi Englannissa, uskoi hän koko omaisuutensa
samoihin käsiin, ja kaikki on mennyttä. Oi rakkaani, onko ihan
varmaa, ettette nyt tahdo jakaa omaisuuttani kanssani?»

Suljettuna Arthurin syliin, painettuna hänen sydäntänsä vasten,


hänen miehekkäät kyyneleensä poskellaan, Pikku Dorrit kiersi
hennon kätensä hänen kaulaansa ja teki renkaan täydelliseksi
toisella kädellänsä.

»Milloinkaan emme enää eroa, rakas Arthur, ei milloinkaan


elämässä! En koskaan ennen ole ollut rikas enkä ylpeä enkä
onnellinen. Olen onnellinen, koska te otatte minut, ylpeä, koska
olette kieltäytynyt minusta, ja onnellinen, koska saan olla kanssanne
täällä vankilassa, samoin kuin olisin onnellinen, jos minun täytyisi
palata kanssanne tänne — jos se olisi Jumalan tahto — saadessani
lohduttaa ja palvella teitä rakkaudellani ja uskollisuudellani. Minä
olen teidän omanne aina ja kaikkialla! Rakastan teitä hellästi.
Tahtoisin viettää elämäni täällä teidän kanssanne, ansaitsisin työlläni
jokapäiväisen leipämme mieluummin kuin ottaisin vastaan maailman
suurimman omaisuuden, mieluummin kuin olisin maailman ylhäisin
nainen. Oi jospa isäraukka tietäisi, kuinka onnelliseksi sydämeni nyt
viimein on tullut tässä huoneessa, jossa hän kärsi monta monituista
vuotta!»

*****

Maggy oli tietysti alusta pitäen tuijottanut silmät selällään ja jo


aikoja sitten ollut itkeä silmänsä puhki. Nyt hän oli niin ylenmäärin
onnellinen, että syleiltyään pikku äitiänsä kaikin voimin ryntäsi
portaita alas kuin merimiestanssija, etsien jotakuta, jolle voisi jakaa
iloansa. Ja kenet Maggy voi tavata, ellei Floraa ja mr F:n tätiä? Ja
tämän kohtaamisen luonnollisena seurauksena oli, että Pikku Dorrit
tapasi heidät odottamassa, kun hän runsaan parin kolmen tunnin
kuluttua oli lähdössä pois.

Floran silmät olivat hiukan punaiset ja hän näytti menettäneen


mielensä tasapainon. Mr F:n täti oli niin jäykkä, että häntä näytti
olevan mahdoton taivuttaa ilman vahvaa konetta. Hänen hattunsa oli
peloittavalla tavalla kiinnitetty takaraivolle ja hänen kivinen
laukkunsa oli niin kova kuin hirviön pää olisi muuttanut sen kiveksi ja
itse mennyt sen sisään. Näin vaikuttavasti varustettuna ja istuen
kaikkien näkyvissä vankilanjohtajan asunnon portailla oli mr F:n täti
näiden parin kolmen tunnin ajan ollut kaupunginosan nuorison
sukkeluuksien esineenä, purppuranpunaisena torjuen niitä
sateensuojansa nupilla.

»Olen kiusallisesti tietoinen siitä, miss Dorrit», sanoi Flora, »että


näyttää tunkeilevalta ehdottaa kohtausta missä hyvänsä henkilölle,
joka on niin paljoa minun yläpuolellani rikkautensa tähden ja niin
kunnioitettu ja hemmoteltu hienoimmissa piireissä vaikkei
kohtauspaikka olisikaan pihanpuolinen kahvila joka on aivan
sopimaton teidän arvollenne, mies on kyllä kohtelias mutta Arthurin
tähden — en pääse siitä vaikka se nyt on vielä paljoa
sopimattomampi kuin Doyce ja Clennam ikinä oli — mutta tahtoisin
vielä sanoa viimeisen huomautuksen tahtoisin antaa viimeisen
selityksen ehkä hyvä sydämenne antaa anteeksi ja suo minulle
tilaisuuden siihen tässä vaatimattomassa paikassa kolmen
munuaispiirakan varjolla.»

Oikealla tavalla tulkiten tämän jotenkin hämärän puheen vastasi


Pikku Dorrit, että hän oli kokonaan Floran käytettävissä, minkä
jälkeen Flora ohjasi hänet kadun poikki puheena olevaan kahvilaan;
mr F:n täti astui kankeana ja jäykkänä perässä alituisesti heittäytyen
hevosten jalkoihin joutumisen vaaraan, osoittaen siinä sitkeyttä ja
uljuutta, joka olisi ansainnut paremmankin tarkoituksen.

Kun kolme munuaispiirakkaa, joiden varjolla keskustelun piti


tapahtua, tuotiin heidän eteensä kolmella pienellä tinalautasella,
kunkin piirakan päässä koristeellinen syvennys, johon ennenmainittu
kohtelias mies kaatoi kastiketta torvisuisesta kannusta, aivan kuin
olisi täyttänyt lamppuja, silloin otti Flora nenäliinan esille.

»Jos mielikuvitus joskus kauniissa unelmissa on uskotellut», aloitti


hän, »että kun Arthur — en vei päästä siitä suokaa anteeksi — taas
pääsisi vapaaksi niin maistuisi näinkin vähän murea piirakka kuin
tämä jossa on munuaista vain muskottipähkinän kokoinen ripponen
uskollisen käden tarjoamana mutta sellaiset unelmat ovat häipyneet
iäksi ja sammuneet, uutta kun kuulen että hän on aikeissa solmia
hellempiä suhteita pyydän vakuuttaa että sydämestäni toivotan
kaikkea hyvää teille molemmille ja etten huomaa vähintäkään vikaa
kummassakaan, surulista on ajatella että ennenkuin aika oli tehnyt
minut paljoa vähemmän solakaksi kuin ennen ja kauhean punaiseksi
vähimmästäkin ponnistuksesta varsinkin syötyäni se on aivan kuin
jotakin ihottumaa niin siitä olisi voinut tulla tosi elleivät vanhemmat
olisi tarttuneet asiaan ja sitä seurasi sielullinen tylsyydenpä kunnes
mr F. ilmestyi kädessään salaperäinen johtolanka kuitenkaan en
tahdo olla halpamainen ketään kohtaan ja toivotan onnea teille
molemmille.»

Pikku Dorrit tarttui hänen käteensä ja kiitti häntä kaikesta hänen


entisinä aikoina osoittamastaan hyvyydestä.

»Älkää sanoko sitä hyvyydeksi», vastasi Flora suudellen häntä


vilpittömästi, »sillä te olitte aina maailman kiltein ja paras olento jos
saan sanoa sen ja rahallisestikin edullista sillä te olitte itse omatunto
vaikka minun täytyy lisätä paljoa miellyttävämpi kuin minun on ollut
minulle vaikka toivon ettei minun omatuntoni ole sen syyllisempi kuin
muidenkaan kuitenkin olen aina huomannut että se on taipuvampi
tekemään minut surulliseksi kuin iloiseksi se nähtävästi nauttii
tehdessään niin mutta nyt lörpöttelen mutta tahtoisin saada
sanotuksi ennenkuin loppukohtaus tulee että soisin vanhan
ystävyyden tähden Arthurin saavan tietää etten ole hyljännyt häntä
vastoinkäymisessä vaan olen kulkenut edestakaisin tiedustelemassa
voisinko auttaa häntä jollakin tavoin ja että istuin kahvilassa jonne
he ystävällisesti toivat hotellista jotakin lämmintä juotavaa tunti
tunnilta ja pidin hänelle seuraa kadun poikki hänen siitä mitään
tietämättä.»

Floralla oli todella kyyneleet silmissä, ja se kaunisti häntä.

»Ennen kaikkea», jatkoi Flora, »pyydän teitä rakkakin ystävä jos


suotte anteeksi sellaisen tuttavallisuuden henkilön puolelta joka elää
aivan erilaisissa piireissä että antaisitte Arthurin ymmärtää, etten ole
varma siitä eikö tuo kaikki meidän välisemme ollut pelkkää
hölynpölyä vaikka kylläkin miellyttävää aikanaan ja surullista myös ja
varmasti mr F. sai aikaan muutoksen ja kun lumous kerta oli voitettu
ei ollut enää syytä odottaa mitään tapahtuvan ellei sitä uudelleen
olisi loihdittu voimaan jota monenkaltaiset yhteenliittyneet seikat
estivät tapahtumasta näistä oli kenties vaikuttavin se ettei sen
pitänyt tapahtua, en voi kuitenkaan vakuuttaa etten jos se olisi ollut
Arthurin mielen mukaista ja olisi tapahtunut luonnollisella, tavalla
olisi ollut hyvin iloinen sillä olen vilkasluontoinen ja ikävystyn kotona
sillä isä on väsyttävin mies maailmassa eikä ensinkään parantunut
senjälkeen kun murhapolttaja leikkasi hänen hiuksensa niin etten ole
nähnyt mokomaa eläissäni mutta kateus ei kuulu luonteeseeni eikä
pahansuopaisuus vaikka minulla on paljon vikoja.»

Kykenemättä tarkoin seuraamaan mrs Finchingiä tässä


sokkelokujassa ymmärsi Pikku Dorrit kuitenkin tarkoituksen ja lupasi
mielellään suorittaa hänelle uskotun tehtävän.

»Rakkauteni temppeli on nyt luhistunut», lausui Flora nauttien


tunnelmasta, »pylväs kaatunut ja pyramiidi seisoo ylösalaisin
käännettynä mitä onkaan sen alla älkää sanoko sitä houreeksi älkää
sanoko sitä heikkoudeksi älkää sanoko sitä hulluudeksi minun täytyy
nyt jäädä yksinäisyyteen katselemaan menneiden riemujen tuhkaa
mutta rohkenen vielä pyytää saada maksaa piirakat joiden
vaatimattomalla varjolla olen saanut tämän keskustelumme toimeen
ja sanoa jäähyväiset ikipäiviksi!»

Mr F:n täti, joka oli syönyt piirakkansa hyvin juhlallisesti ja


suunnitellut jotakin kauheata tekoa siitä alkaen kun oli istunut
julkiselle paikalle vankilanjohtajan rapuille, käytti nyt tilaisuutta
lausuakseen seuraavat sibyllamaiset sanat veljenpoika-vainajansa
leskelle:

»Tuo hänet tänne, niin heitän hänet ulos ikkunasta!»

Flora koetti turhaan rauhoittaa tätä erinomaista naista selittämällä,


että he nyt lähtisivät kotiin syömään päivällistä. Mr F:n täti toisteli
itsepintaisesti: »Tuo hänet tänne, niin heitän hänet ulos ikkunasta!»
Toisteltuaan tätä kehoitusta lukemattomia kertoja ja mulkoillen
vihamielisesti Pikku Dorritiin risti mr F:n täti käsivartensa ja istui
kahvilahuoneen nurkkaan lujamielisesti kieltäytyen liikahtamasta
ennenkuin »hän» oli tuotu paikalle ja heitetty ikkunasta ulos.

Asioiden näin ollen Flora mainitsi Pikku Dorritille, ettei viikkokausiin


ollut nähnyt mr F:n tätiä näin vilkkaana ja tarmokkaana, että hänen
täytyisi »kenties tuntimäärin» viipyä kahvilassa, kunnes taipumaton
vanha rouva leppyisi, ja että hän parhaiten tulisi yksin toimeen
hänen kanssansa. He erosivat siis mitä ystävällisimmällä tavalla ja
ystävällisimmin tuntein molemmin puolin.

Koska mr F:n täti kesti kuin luja linnoitus ja Flora oli virkistyksen
tarpeessa, lähetettiin sananviejä ravintolaan noutamaan
ennenmainittua pikaria, joka myöhemmin uudelleen täytettiin.
Pikarin sisällön, sanomalehden ja valiopiirakoiden avulla kesti Flora
tämän odotusajan varsin hyväntuulisena, vaikka hän tosin silloin
tällöin joutui ymmälle typerän huhun aiheuttamien seurausten
tähden: ympäristössä kerrottiin herkkäuskoisten lasten keskuudessa,
että muuan vanha rouva oli myynyt itsensä kahvilaan
piirakkatäytteeksi ja että hän nyt istui kahvilan vierashuoneessa
kieltäytyen täyttämästä sopimusta. Tämä juttu houkutteli niin suuren
joukon sekä tyttöjä että poikia paikalle, että se hämärän tullessa
haittasi liikettä siinä määrin, että kahvilan isäntä varsin jyrkästi vaati
mr F:n tätiä poisvietäväksi. Ajurin vaunut tuotiin siis ovelle ja
isännän ja Floran yhteisin ponnistuksin saatiin mr F:n täti
houkutelluksi niihin; tosin hän vielä pisti päänsä ikkunasta ja vaati
»häntä» tuotavaksi paikalle ennenmainittua tarkoitusta varten. Koska
huomattiin tämän ihmeteltävän johdonmukaisen naisen tässä
tilaisuudessa luovan murhaavia silmäyksiä Marshalseahan päin, on
otaksuttu hänen tarkoittaneen uhkillaan Arthur Clennamia. Tämä on
kuitenkin pelkkä otaksuma; kuka se henkilö oli, joka mr F:n tädin
tyydytykseksi olisi ollut tuotava paikalle, mutta jota ei milloinkaan
tuotu, se ei ikinä selvinne.

*****

Syyspäivät kuluivat, eikä Pikku Dorrit enää kertaakaan tullut


Marshalseaan lähteäkseen sieltä tapaamatta Arthuria. Ei, ei, ei.

Eräänä aamuna kuunteli Arthur taas niiden keveiden jalkojen


ääntä, jotka joka aamu kuin siivin kantoivat Pikku Dorritin hänen
syliinsä tuoden uuden rakkauden taivaista kirkkautta tähän
huoneeseen, missä vanha rakkaus oli taistellut niin ankarasti ja
pysynyt niin uskollisena, ja silloin hän erotti, ettei Pikku Dorrit tullut
yksin.

»Rakas Arthur», sanoi hänen iloinen äänensä oven takaa,


»mukanani on täällä eräs. Saanko tuoda hänet sisään?»
Arthur oli askeleista huomannut, että siellä tuli kaksi. Hän vastasi
»kyllä», ja Pikku Dorrit toi mr Meaglesin mukanaan. Tämä oli
päivettynyt ja hilpeä, avasi sylinsä ja sulki Arthurin siihen kuten
päivettynyt ja hilpeä isä ainakin.

»No, nyt olen tyytyväinen», sanoi mr Meagles parin minuutin


kuluttua. »Nyt on kaikki ohi. Arthur, rakas ystäväni, tunnustakaa
pois, että odotitte minua aikaisemmin tulevaksi.»

»Niin tein», myönsi Arthur, »mutta Amy kertoi —»

»Pikku Dorrit. Ei milloinkaan muuta nimeä.» (Tämä kuiskattiin


Arthurin korvaan.)

»— mutta Pikku Dorritini sanoi, ettei minun pitänyt kysyä mitään


selitystä eikä odottaa teitä ennenkuin näkisin teidät täällä».

»Ja nyt näette minut, poikani», sanoi mr Meagles ja pudisti lujasti


hänen kättänsä, »ja nyt selitän teille kaikki ja mitä hyvänsä. Asia on
kyllä niin, että minä olin täällä — tuin suoraan allonsien ja
marchonsien maasta, muuten en kehtaisi katsoa teitä silmiin tänä
päivänä — mutta te ette ollut seurustelukunnossa, ja minun oli
lähdettävä taas matkaan tapaamaan Doycea.»

»Doyce-parka!» huokasi Arthur.

»Älkää antako hänelle nimiä, joita hän ei ansaitse», sanoi mr


Meagles. »Hän ei ole mikään raukka, hän menestyy hyvin. Hän on
ihmeellinen mies siellä vieraassa maassa. Vakuutan teille, että hän
raivaa itsellensä tien kuin tuli. Hän on oikein joutunut omalle
alalleen, niin on. Siellä, missä he eivät tahdo saada mitään tehdyksi
ja löytävät miehen, joka tekisi sen, siellä mies on kuin jalaton; mutta
missä tahdotaan saada jotakin tehdyksi ja löytyy siihen pystyvä
mies, siellä tämä mies on kuin tuli ja leimaus. Teidän ei tarvitse enää
vaivata verukevirastoa. Tietäkää, että Dan on päässyt eteenpäin
ilman heitä.»

»Millaisen kuorman nostattekaan hartioiltani!» huudahti Arthur.


»Kuinka onnelliseksi teettekään minut!»

»Onnelliseksi!» tiuskasi mr Meagles. »Älkää puhuko


onnellisuudesta. ennenkuin olette nähnyt Danin. Vakuutan teille, että
Dan johtaa laitoksia ja suorittaa siellä sellaisia töitä, että hiukset
nousisivat pystyyn päässänne, katsellessanne sitä. Hän ei ole mikään
julkinen pahantekijä nyt, totta vie! Hän on saanut mitaleja ja
nauhoja, tähtiä ja ristejä ja jos joitakin hetaleita, kuin synnynnäinen
aatelismies. Mutta me emme saa puhua kaikesta tästä täällä.»

»Miksei?»

»Ei toki!» sanoi mr Meagles pudistellen päätänsä perin totisena.


»Hänen täytyy piilottaa kaikki sellaiset lukon taakse tullessaan tänne.
Ne eivät kelpaa täällä. Tässä suhteessa Britannia on perin kateellinen
— ei itse tahdo antaa lapsillensa tällaisia kunniamerkkejä eikä salli
näyteltävän niitä, joita he ovat saaneet muissa maissa. Ei, ei, Dan!»
Ja mr Meagles pudisti päätänsä. »Se ei käy täällä!»

»Jos näiden tietojen asemesta olisitte tuonut minulle kaksin


verroin sen, mitä olen menettänyt», huudahti Arthur, »niin se ei olisi
ilahduttanut minua niin kuin nämä uutiset!»

»No tietysti, tietysti!» myönsi mr Meagles. »Tiesin tämän, rakas


ystäväni, ja siksi kerroin sen ensi suunavauksella. No, palatkaamme
siihen, että tavoittelin Doycea. Ja löysin hänet. Juoksin häntä
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like