Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
284 views
in Technique[技术] by (71.8m points)

iphone - What exactly is a Private API, and why will Apple reject an iOS App if one is used?

I've read several articles about this, and I just want to see if I understand this correctly:

Apple will reject your app if you use a Private API...

  1. What is the main difference between a "Private API" and a "Non-private API?"

  2. Are the "Non-private" APIs only the APIs provided and verified by Apple?

  3. Isn't an API just a way of interacting with a Framework, and a Framework is just a set of encapsulated classes/headers that people can use for trivial purposes?

  4. Wouldn't this mean that I cannot reuse anyone's code (other than Apple's) at all in my app?

  5. If this is true, whenever a programmer makes his or her own custom classes and methods, isn't he technically designing a mini Framework just for his specific purpose? So wouldn't this mean that he is using his own private API?

  6. What would even be the difference between using someone else's classes/methods alongside my classes/methods, how could they even tell the difference, and why would this be a problem?

My understanding of this sounds absurd, and don't believe I am understanding what a "Private API" is correctly. I did read that it was to protect against any changes in the API that could render your App dysfunctional. Does this mean APIs are linked during run time (as opposed to compile time) and can be updated automatically without you knowing or something? (See, I was originally thinking of APIs/frameworks as being set in stone whenever you compile, maybe this is where I am wrong)

Can someone please help me out? I'm really confused about this policy. Thank you!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Q. What is the main difference between a "Private API" and a "Non-private API?"

  • Private is one that isn't publicly defined (there isn't much to it)

Q. Are the "Non-private" APIs only the APIs provided and verified by Apple?

  • Private and Public APIs are both 'provided' by Apple but only public APIs are provided for you to use.
  • The private APIs are for use by Apple only

Q. Isn't an API just a way of interacting with a Framework, and a Framework is just a set of encapsulated classes/headers that people can use for trivial purposes?

  • Yes

Q. Wouldn't this mean that I cannot reuse anyone's code (other than Apple's) at all in my app?

  • No

Q. If this is true, whenever a programmer makes his or her own custom classes and methods, isn't he technically designing a mini Framework just for his specific purpose? So wouldn't this mean that he is using his own private API?

  • No (a framework is different to an app)

Q. What would even be the difference between using someone else's classes/methods alongside my classes/methods, how could they even tell the difference, and why would this be a problem?

  • It usually wouldn't

The point you need to get is that when referring to private APIs you should only be thinking about private Apple supplied APIs.
Other APIs from 3rd parties are different (and Apple doesn't care so long as that 3rd party code doesn't use Apple private APIs).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...