Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
As someone who has never developed an iOS app but hopes to soon and has never had a Mac (to date) the whole XCode and process for developing apps was a little lost on me.
To start: things like which languages are supported in development was one area I wasn't sure of:
I've seen C, C++ and Objective-C referenced as the languages used to write the apps. But I've also seen JavaScript` + HTML + CSS and .NET as options and a host of other compiled languages, with people arguing if you can or can't use them.
Another thing I wondered about was Xcode, does it support all the mentioned languages? Or is an IDE built for a specific language such as Cocoa ? If it is, then how would someone use JavaScript for example to write the app?
I'm sure this is a fairly simple answer to Apple users, but I had some struggle trying to relate from a non-Apple background.
Updated
Thanks for the great answers and insight, hopefully other this post will be helpful to others who don't have an Apple / iOS background
All three language alternatives that you mentioned are available to iOS application developers *.
Objective-C/C++ offers a way of making native apps for iOS, you produce machine code that runs on the devices. You use Xcode to develop in these languages.
You can build apps in JavaScript + HTML + CSS because iOS comes with a browser. Apple offers a mode that gives your apps a completely native look and feel, so they do look like first-class citizens.
You can build your apps in C# as well by using Mono Touch. This is different from .NET, although the language is the same, because your code is compiled into binary ahead of time. Although using Mono Touch eliminates the learning curve associated with the new language, you need to go through a fair bit of learning to adapt your knowledge of .NET to a different platform.
* Except Cocoa, which is not a language, but a collective name for Apple's frameworks for developing under OS X and iOS.
iOS' native language is Objective-C. While it's true you can use C++ to make apps (Cocos for example, is mostly written in C++) it isn't the 'native language'.
As for the other languages you mention, while it's possible to create apps using them they won't be 'native' normally relying upon another IDE/Library, phone gap or adobe air for example. Most of these also support cross platform development.
Where I work we also use HTML5 to create a 'faux native' interface/experience.
If you're new to iOS it's worth while checking out Apple documentation/sample code at:
https://developer.apple.com
There is a wealth of knowledge there that should set you on the right path. It ins't however, something I'd recommend if you don't have any experience with object orientated programming.
Coming from a C++ background myself, I didn't find it too difficult but have been working on iOS for about 3 years (on and off) and am only just starting to really become truly fluent in it's processes and conventions.
Hope this helps, let me know if you want to know anything specific.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 months ago.
Improve this question
I am planning on building a Lua scripting engine into my iOS game engine to allow AI designers to control the game's AI. The game engine is written in Swift and SpriteKit and targets iOS on iPhone and iPad.
I have been reading lots of conflicting information online about whether Apple allows the execution of Lua scripts inside an iOS app. Does anyone know whether Apple allows this, as of 2022? I have found some answers online, including on StackOverflow, but some sources claim Apple allows this capability, and some say Apple does not.
There seems to be some distinction between downloading and executing scripting code, vs just executing the scripting code. I am Ok with bundling the Lua scripts into the packaged iOS bundle. I'd like to be able to dynamically download the Lua scripts, but it is not a requirement.
Note that I am able to include a copy of the Lua code in my Xcode project, included a bridging header with some Objective-C wrapper files, and can successfully call and execute Lua functions from Swift code, and vice versa. So technically this technique is possible, my question concerns whether Apple allows this.
In addition, in searching for an answer to this question, it appears that very few iOS games support modding. I was only able to find 2 or 3 games in which players claimed it was possible to write a mod for the iOS version of the game, but for even those, it was a little unclear whether the games actually allowed the mod on the mobile version. Mindustry was the only game that I could find in which you could install a mod on iOS. It is unclear to me whether the lack of modding support on iOS was due to Apple not allowing iOS apps to execute scripting code, which would effectively eliminate most games' modding capability, or whether the lack of modding on iOS was just because it's mostly PC gamers who write mods for their games. Mobile gamers just don't get into modding. So if anyone knows of any iOS games that support modding, especially via Lua scripts, could you post the name of the game?
I would like to know is Swift universal for Mac and iOS.
If it's not identical, what are the main difference?
Can a Swift iOS developer develop Mac apps without learning it all over again?
Thanks!
Swift is a language. The swift language will be the same for when you are making IOS apps or Mac applications. When you are making an ios app you are using alot of libraries and framework that help you do things that you would need. So when you try making the Mac applications you will not have access to those same framework and libraries. You would need to learn new ones. It would not take a lot of effort to go from an ios developer to building Mac applications.
As mentioned by #the_pickle, Swift is a language. A language is platform-independent.
iOS and Mac OS are two platforms. They have their own set of frameworks and libraries. As Wikipedia puts it:
A software framework is an abstraction in which software providing
generic functionality can be selectively changed by additional
user-written code, thus providing application-specific software. A
software framework is a universal, reusable software environment that
provides particular functionality as part of a larger software
platform to facilitate development of software applications, products
and solutions. Software frameworks may include support programs,
compilers, code libraries, tool sets, and application programming
interfaces (APIs) that bring together all the different components to
enable development of a project or solution.
What this means is that a framework makes it easy by providing something generic, say a blank view. What the programmer does is use that view and modify it to fit the needs of the software they are making. So they can make that view green, rounded at the corners, semi-transparent, and/or a combination of many other possibilities.
That is where iOS and Mac OS differ. They have their own set of frameworks and libraries. They are nothing but a bunch of stuff that is needed by programmers over and over again. So they make it reusable in the form of a framework, and allow you to customize it.
However, the language (Swift) is still the same. So that means you will call functions, declare and use variables and everything else in the same way.
If you are trying to be an iOS developer, you will need to learn the (general) language Swift, and the (specific) iOS frameworks. If you are trying to be a Mac developer, then you will have to learn the (general) language Swift, and the (specific) Mac frameworks.
Here's a good starting point for you:
Learn about Swift from here:
https://developer.apple.com/swift/resources/
This is a good starting document:
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html
Learn about iOS frameworks starting here:
https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/iPhoneOSFrameworks/iPhoneOSFrameworks.html
Learn about Mac frameworks starting here:
https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html
And then get started on learning about putting it all in practice from any online course. Here's a course that takes it easy and is available for free as of now:
https://www.bitfountain.io/
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 years ago.
Improve this question
With the technology preview of Android/iOS support in Qt 5.1, are there any news on deploying to Apple's app store yet? Since the non-commercial version of Qt is LGPL-licensed, and dylibs are usually not permitted by the app store rules, there would not to be an exception either on Digia's or Apple's side, however the Licensing talk doesn't provide any up-to-date information on the matter.
So, did anyone try to push a dynamically linked Qt app to the store, or have an official statement of either party?
So, did anyone try to push a Qt app to the store, or have an official statement of either party?
Yes, there are qt demo applications in there. See the following examples:
https://itunes.apple.com/us/app/subattack/id659283830
and
https://itunes.apple.com/us/app/qtquicksand/id666273528
This answers your question and concern I believe. As for further information, Qt 5.2 will even come with more support for this mobile platform. Although, I am not working on this port in the Qt Project, but I see that as a developer that 5.2 seems to support a lot more.
For instance, v8 has just got replaced by the new shiny v4 engine which will allow the proper QtQuick2 delivery for this platform.
That being said, the Apple Store will not allow dynamic libraries for runtime loading, so you will need to link statically.
I don't know of a Qt iOS app that has been published, but I have been looking into this myself. One good thing I found was an iOS preview that was published by Qt which states the following:
"We are very excited to be able to bring Qt to a new platform. Qt for iOS is planned to be a supported part of Qt 5.2, scheduled for release late 2013. The scope of that release is not completely determined: available resources, platform/app store restrictions and Qt legacy set constraints on the project."
The rest of the blog can be found on the Qt site.
That's an official statement, although it's stating that they don't know yet.
I have been looking into the same situation and as of now it seems that you need to have a commercial license to deploy Qt on iOS.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
NB: This question has been extensively edited to make it more relevant, for completeness the original question maintained at the end.
What version(s) of iOS should my App support?
When building a new iOS app what a strategies should one use to determine what versions of the operating system to support? What practical considerations are there in supporting legacy OS version. Are there any reliable statistics to support the business case of dropping legacy support?
Original Question
If I build a new iOS application, should I support iOS versions prior to 5.0, or is that not necessary anymore? Is there any reliable and up to date data on iOS 5.0 adoption rates?
iOS Support Matrix v3.0.1
This version is updated and includes iOS 7.1 and new iPads.
Link: http://www.iossupportmatrix.com
According to this article: http://thenextweb.com/apple/2012/03/06/why-do-developers-prefer-ios-over-android-try-75-adoption-of-ios-5-while-ics-is-stuck-at-1/
the adoption rate of iOS5 has been very fast, at least when compared to Android ICS. You will always have users that are very slow to upgrade, however they seem to be the minority on iOS. If the numbers from the article are correct, you should be fine using iOS 5 for you app.
Look at statistics and judge for yourself if it is worth the effort.
For example:
http://www.14oranges.com/2012/03/ios-version-statistics-march-14th-2012/
http://pxldot.com/post/18754186750/ios-ebb-and-flow
from which I can read that < 11% are still using iOS 4.3
Or just search for e.g. "ios version stats", and try to find a web site that matches the target audience for your app.
This depends a lot on your app. But I would recommend supporting only iOS 5.0 and later because:
The new Xcode creates iOS 5.1 projects by default.
The new Xcode doesn't include iOS 4.3 simulator by default.
Apple has some iOS 5.0 only apps (like iTunes U).
So I guess, Apple is somehow pushing developers to support only the newer versions of the iOS.
Here is a good article that has some recent stats about iOS 5 adoption rates and good arguments on why to support only iOS 5 for new apps.
Here is another good article that discusses the question. Its conclusion is:
I think that both positions (support old, or support only new) are valid.
So it really depends on your special case. But personally, I'll currently support iOS 5.0 or later, unless there are solid reasons for a particular app.
I asked the same question some time ago and did not get any good answer with respect to a reliable up-to-date source of statistic data. In the end it comes down to your target market.
People who do not update their os recently are not likely to buy apps in high volumes. So even if these devices exist, the fraction of potential customers amongst their owners is most likely much smaller. That makes it hard to justify the extra effort in providing iOS 5.0+ functionaltiy and same functionality for smaller iOS.
On the other hand it may be suitable for you just to omit some functions for older iOS. That of course depends on the nature of the 5.0+ function that you want to use. Testing the curent os version and then deciding wether to call a function/method or not ist not that much of an effort. It needs to be tested though.
On the other hand there may be an interesting part of the user community that does consume apps but did not yet afford a brand new device. There is a number of devices around which cannot be migrated to iOS 5.x. And I personally would be interested in a) how many of these divices exist and b) how many of these are still in use.
If it is a new app then adressing older devices may not be justifyable. Unless of course you address some very special interest group and now for sure that the amount of oder devices is of a significant value.
Just some thoughts. Sorry that I did not have the statistics handy that you were looking for.
In my opinion it depends on which features of iOS 5.0 you need...
As example: in an application I need support for forward geocoding, available only in iOS 5.0 so I decided that the number of unsupported devices "cost" less then the effort to find a non apple library for forward geocoding ..
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 5 years ago.
Improve this question
I've heard that apple drops a lot of app submissions due to their stiff terms.
I dont want to get too far with my project because i know that it will be hard
to rewrite it later.
Now i began rewriting it to Objective-C (from c++) because i got somehow the
impression that apple takes only pure objective-c code. In some places on the
net, people offers solutions in c\c++ for problems which cannot be solved
with objective-c which makes me kinda think rewriting again.
In order to clear things out, can someone please give me a direction to where can
i find those iphone-code-terms of apple?
You can use C++ or Objective C++ in an iPhone app for the AppStore. There's no problem with that. Obviously you'll need some Objective C or Objective C++ in order to present a UI to the user, but everything else can be straight C++ if you're so inclined. Many applications (particularly game ports) take this approach, using C/C++ code developed on other platforms, and 'wrapping' it in an Objective C shell.
You can use any language you like, provided it is compiled code. Interpreters are banned, which means no Python or Ruby... but you can use Lua, lisp, C, C++, Obj-C, Java (using something like gcj, not a JVM), D, Haskell, or anything else that can compile to ARM code or a static LLVM backend.
At least the SpeakHere sample application makes extensive use of C++. If that has, chances are that many sample apps do (and hence that your app may use C++/Objective-C++).
Objective C is a super set of C++, so it should be no problem if you use C++. The full terms and condition are at http://developer.apple.com/iphone which is a must for any iPhone developer. The SDK is part of the 99US$ membership and includes tools you will need, such as the iPhone simulator and tools to allow you to test your app on your real iPhone. Additionally, you will need this membership to submit your app to the appstore.