Skip to content

Conversation

@maxep
Copy link
Contributor

@maxep maxep commented Jan 25, 2018

Move internal headers to private section.

@flovilmart
Copy link
Contributor

@maxep thanks for the PR, what's the motivation behind it?

@maxep
Copy link
Contributor Author

maxep commented Jan 25, 2018

This allows to access private interfaces and utils that can be useful in an advanced integration of Parse. Public headers stays as is, but internal headers can used with an explicit import.

As an example, I've developed a module that can store Parse objects into Realm, to do so I need PFObjectPrivate, PFObjectState or PFMutableObjectState... I also make a good use of BFTask+Private, PFInternalUtils, PFHash, PFJSONSerialization..

It might be useful to others.

@flovilmart
Copy link
Contributor

@maxep ok with the rationale, however, we can't really guarantee the stability of the internal headers, is that fine with you?

@maxep
Copy link
Contributor Author

maxep commented Feb 5, 2018

@flovilmart yes it's completely fine. Private headers are not intended to be used unless you know what you doing.

I can't find it anymore but Apple documention previously said:

Public: The interface is finalized and meant to be used by your product’s clients. A public header is included in the product as readable source code without restriction.

Private: The interface isn’t intended for your clients or it’s in early stages of development. A private header is included in the product, but it’s marked “private”. Thus the symbols are visible to all clients, but clients should understand that they're not supposed to use them.

Project: The interface is for use only by implementation files in the current project. A project header is not included in the target, except in object code. The symbols are not visible to clients at all, only to you.

@flovilmart
Copy link
Contributor

flovilmart commented Feb 5, 2018 via email

@maxep
Copy link
Contributor Author

maxep commented Feb 5, 2018

Yes I will do that!

@flovilmart
Copy link
Contributor

Thanks! @maxep I'd rather limit the exposure and add more over time than expose everything and risk breaking your components :)

@flovilmart
Copy link
Contributor

@maxep not to put presure on you, I'd release 1.17.0 soon and it would be nice with this.

@maxep
Copy link
Contributor Author

maxep commented Feb 5, 2018

@flovilmart Ok I will try to push an update tomorrow :)

@maxep
Copy link
Contributor Author

maxep commented Feb 6, 2018

@flovilmart while it is easy to select private headers from the project targets, the current folder hierarchy makes it quiet complicated to specify them in the podspec.. I will need to reorganise the folders which can take some time and I don't know if you want to go in that direction?

@flovilmart
Copy link
Contributor

Ah you’re right! This is quite tedious. I’ll check the branch and make sure it’s all clean, notably that the private headers are exposed to all targets.

@flovilmart flovilmart closed this Feb 6, 2018
@flovilmart flovilmart reopened this Feb 6, 2018
@flovilmart
Copy link
Contributor

I just closed and reopen in order for the CI to run

@maxep maxep changed the base branch from master to release-1.17.0 February 6, 2018 15:20
@maxep maxep changed the base branch from release-1.17.0 to master February 6, 2018 15:31
@flovilmart
Copy link
Contributor

ALright let's go and see how it goes!

@flovilmart flovilmart merged commit 0be1a78 into parse-community:master Feb 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants