Q:

Xcode 10, minimum effort to enable code coverage

I have a large Xcode 10 project for an iOS app that has nearly 40 screens and associated view controllers (all are Objective-C).   Some of the code is a decade old and some new.   The project has no UI or unit tests, but I'd like to enable code coverage and manually exercise the app.   Is there a way to add, say, one test that will allow me to run the entire app manually and track which methods and functions are or are not used? 

A:

It was simpler than I expected, just not easy because I'd never done any tests before. 
I made a UI test that keeps running until some testable event occurs that I can trigger, such as quitting the app (putting it into the background). 
Run this test and exercise the app.   When done, press Home.   The test will exit and the code coverage for whatever you did while running will be shown in the Code Coverage column of the editor. 

Add a new target for UI testing. 
Edit Scheme, Test, Options: Code Coverage for: all targets. 

Add this code as a UI test:
- (void)testCoverage
{
    // UI tests must launch the application that they test. 
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];

    // Code Coverage is turned on in the Test scheme

    // (a) loop until Home button pushed...
    while ( [app waitForState:XCUIApplicationStateRunningBackground timeout:60] == NO ) {
        // still in the foreground
    };
    // now in background
    // (b) or, sleep(20);
}

Must be a UI test.   As a unit test, the line XCUIApplication *app = [[XCUIApplication alloc] init]; causes an exception.