Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

High Level Interface - Foundation (revision) #470

Merged

Conversation

ghost
Copy link

@ghost ghost commented Apr 23, 2018

This proposal is about setting up a foundation to provide a high level developer interface to the iOS library.
The foundation will be about the application lifecycle which is necessary for view controller lifecycle and management.
It's the first proposal from a set of proposals each addressing a specific section of the high level interface.

This PR is a revision to deferred #448 . The revision now contains the application lifecycle only and excludes all other areas. Those excluded areas will be added again in separate proposals.

@ghost
Copy link
Author

ghost commented Apr 23, 2018

@theresalech the PR is now ready for review.

Copy link
Contributor

@theresalech theresalech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @kshala-ford - I've left a few comments for your review. Please let me know if you have any questions or concerns with addressing. Thanks!


View controllers are instantiated when they are pushed to the view controller manager. In the case of the root view controller it would be instantiated once a connection is established to the head unit (app is registered). In this state there is no view loaded. The app developer should not load data or perform other memory/time intense code at this time.
/** The configuration the SDL application. (bypass to manager) */
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be either "The configuration of the SDL application." or "The SDL application configuration."

View controllers should be stackable. Similar to [`UINavigationController`](https://developer.apple.com/documentation/uikit/uinavigationcontroller) an SDL view controller manager should be used by the SDL application class. Different to `UINavigationController` there should not be an `SDLNavigationController`. First of all the navigation controller provides UI elements (no Navigation buttons or Toolbar) which cannot be adopted to SDL. Second to avoid confusion the code responsible for the stack should not be called navigation. (An alternative for `SDLNavigationController` or `SDLStackViewController` can be added if requested).

The view controller manager provides methods to access view controllers and manipulate the view controller stack.
A private extension will be used in order to create objects out of `SDLApplication`. This extension should be located in a separate private header file but should be implemented in the application's .m file. This would hide the technical possibility for creating multiple `SDLApplication` objects. The function `SDLApplicationMain()` should use the initializer and set the shared application instance. For those who master SDL and need to have multiple objects can reuse the extension and create new objects manually.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the last sentence to "Those who master..." (removing "For")


@property (nonatomic) NSArray<SDLView *> *subviews;
#### configuration
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be capitalized "Configuration"

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually that's code in the title (parameter name). I ``'d it.


@property (nonatomic, nullable, copy) NSArray<SDLTextField *> *mainFields;
This proposal will add a total new high level interface layer abstracting many parts of SDL. Existing code should not be affected in a short term but it would make parts of the code obsolete therefore to be deprecated and made private.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update to "...totally new..."

@ghost
Copy link
Author

ghost commented Apr 24, 2018

Thank you @theresalech. Just made the requested changes.

@theresalech theresalech merged commit ba353be into smartdevicelink:master May 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant