Development Macintosh for apps (mostly iPhone)

This post is a tl;dr but I don’t know enough or have time to make it succinct. I’m looking for suggestions on Macintosh development hardware and current Mac development methodologies.


I plan on buying a new Macintosh to use for development of iPhone applications to both replicate my existing Android applications and also to create some completely new apps. I may also move my Android development to the Macintosh depending on the experience and some other choices I make over the next year.


My original intent was to have “single source“ development. I only wanted to maintain one set of source code with some platform specific customizations. My goal has evolved to include enough platforms that I don’t think single source is possible and it definitely isn’t what I want now.


My current plan is to buy one behemoth laptop for personal use, development, and presentations. I could also probably be persuaded to buy a Mac Studio for development and an iPad Pro for personal portable use.


Enough of my jabber… What are your thoughts, questions, etc. ?

Posted on Jul 7, 2023 5:14 AM

Reply
Question marked as Top-ranking reply

Posted on Jul 7, 2023 8:37 AM

Most of your question is feasible.


The portability that was mentioned more as an aside, however, can be a larger project.


High-end Mac mini or low-end Studio will work fine for this. I don’t prefer laptops for development, as the screens are far smaller and I prefer multiple windows open, and as portability trades off for features and price. But I also have a desk, and am not developing while traveling. Different trade-offs for different people, obviously.


App portability is a whole pile of “fun”, as you’re now writing your app to the portable framework (Flutter at al) and not to the host platform, and that can mean chasing framework issues across platforms. The frameworks will always be behind what Apple and Android are offering, too. You’ll probably also spending more time in the forum for the platform you have chosen than around here, as well.


The other option is to write portable code—C and C++ are common choices there, and Apple supports those with Xcode—and then call that common code from platform-specific UI code you’ve written. Apple does have some parts of Swift in Android, but that project does not seem particularly active.


Android is mostly Java and Kotlin, while Apple platforms use Swift, Objective C, and C, C++ and a few others. (Kotlin was in beta for some Apple platforms, but that’s not something I’ve seen discussed around here, and issues with that will involve JetBrains.)


The other option here is to focus on one platform, of course. With Apple, the same code (and variously, the same app) can be used across iPhone, iPad, and macOS.


Hosting a common source code pool is less of an issue, as most development tools can integrate with Git. (Not that git is without its issues.)

8 replies
Question marked as Top-ranking reply

Jul 7, 2023 8:37 AM in response to YetAnotherSQL

Most of your question is feasible.


The portability that was mentioned more as an aside, however, can be a larger project.


High-end Mac mini or low-end Studio will work fine for this. I don’t prefer laptops for development, as the screens are far smaller and I prefer multiple windows open, and as portability trades off for features and price. But I also have a desk, and am not developing while traveling. Different trade-offs for different people, obviously.


App portability is a whole pile of “fun”, as you’re now writing your app to the portable framework (Flutter at al) and not to the host platform, and that can mean chasing framework issues across platforms. The frameworks will always be behind what Apple and Android are offering, too. You’ll probably also spending more time in the forum for the platform you have chosen than around here, as well.


The other option is to write portable code—C and C++ are common choices there, and Apple supports those with Xcode—and then call that common code from platform-specific UI code you’ve written. Apple does have some parts of Swift in Android, but that project does not seem particularly active.


Android is mostly Java and Kotlin, while Apple platforms use Swift, Objective C, and C, C++ and a few others. (Kotlin was in beta for some Apple platforms, but that’s not something I’ve seen discussed around here, and issues with that will involve JetBrains.)


The other option here is to focus on one platform, of course. With Apple, the same code (and variously, the same app) can be used across iPhone, iPad, and macOS.


Hosting a common source code pool is less of an issue, as most development tools can integrate with Git. (Not that git is without its issues.)

Jul 7, 2023 6:16 PM in response to YetAnotherSQL

YetAnotherSQL wrote:

Thanks for your reply!

My thought is to put the core logic that drives the application in C++ because that will run unchanged on all four platforms. The logic won’t change. All four platforms can call C++ routines.

I expect that the UI will be written to the platform. Drupal for the web, Swift UI for the Apple, Visual Studio (likely WinForms driven by C#, but that isn’t decided yet) for Windows.

Write the core once. Compile it for each target. Do the UI native for each platform.

i’m intrinsically lazy. I don’t do more work than is needed to get the results that I want!


I would not over-design these apps.


Not until you get some traction with the apps.


Over-designing is more work, more testing, and—particularly for a small development team—greatly fragmenting your focus.


Focus which is best kept on getting to a shippable product (on whichever platform(s) you chose as your core), and iterating from there.


I’ve worked with about half of what you’ve listed for plans, and it’s an immense effort to keep working effectively across a subset of all of those targets.


Then there’s support, because bug reports and glitches and re-testing and payments and refunds and the rest will arrive, and will consume focus, too.

Jul 7, 2023 5:05 PM in response to YetAnotherSQL

YetAnotherSQL wrote:

What are your thoughts, questions, etc. ?

Don't waste your time with Android. Apple platforms are far more profitable. If you're independently wealthy I guess you could do what you want. But if you want to make money, or make apps that provide real financial value to your and/or your career, Apple is where it's at.


One platform will consume all of your time. You can be an expert on the most profitable platform or be an impoverished beginner on all platforms. Cross platform is total junk and everyone knows it.


You don't need a behemoth laptop. I just bought a slightly upgraded 2023 MacBook Air (16 GB RAM, 1 TB HD) and it's super-fast. It was intended to replace my old top-of-the-line 2017 MacBook Pro that can't run Sonoma. It's so much faster it's crazy. The simulator is finally useable!


Don't buy a new mobile device for development. Get something that will top-out at your minimum platform. If your apps run well on those, they'll run great on current devices. I use my old iPhone 6s and my old iPad Air 2, both stuck on iOS 15. Don't get caught up in the upgrade rat-race. That's for chumps.

Jul 7, 2023 5:10 PM in response to YetAnotherSQL

YetAnotherSQL wrote:

I’m comfortable using C++ and I think that will become the processing/logic core of the next generation of my apps. That gets me a lot of common source code between platforms.

That's a dead-end. You'll need to use Swift on Apple platforms. Objective-C++ is still useful for legacy code and interfacing with C++. But if it doesn't need to touch C++, it doesn't need to be anything but Swift.


Don't get me wrong, I despise Swift. It's easily 50% hype and 20% annoying. But SwiftUI so much better, relatively speaking, than any of Apple's previous attempts that it's a clear win.

Jul 7, 2023 11:19 AM in response to YetAnotherSQL

Random giblets…


Budget for a NAS or directly-attached external HDD or SSD storage, for Time Machine backups, too.


Some of the NAS vendors offer Git servers, so you can offload that as needed. Synology is one.


And Synology has Windows backup option, as well.


[Probably obvious, but we do get too many “I lost my data; no backups” postings around here.]


If you’re thinking of running Microsoft Windows on Mac, you’ll need Parallels and the Arm version of Windows.

Jul 7, 2023 5:35 PM in response to etresoft

Thanks for your reply!


My thought is to put the core logic that drives the application in C++ because that will run unchanged on all four platforms. The logic won’t change. All four platforms can call C++ routines.


I expect that the UI will be written to the platform. Drupal for the web, Swift UI for the Apple, Visual Studio (likely WinForms driven by C#, but that isn’t decided yet) for Windows.


Write the core once. Compile it for each target. Do the UI native for each platform.


i’m intrinsically lazy. I don’t do more work than is needed to get the results that I want!


Jul 7, 2023 9:15 AM in response to MrHoffman

Thanks for your help!


My current plan is to buy a moderately high end MacBook Pro. High end specifically so it can support multiple external monitors when I’m at home.


When I am mobile, the MacBook may be sufficient. I may also carry an iPad Pro to use as both an iPad and as a second screen for the MacBook.


At home I plan to use a CalDigit TS4 to connect to my desktop KVM so I can add dual 4k60 screens and my audio gear.


I expect to go native for UI on web, Apple, Android, and Windows. I think that those four platforms will give me the ability to serve nearly five nines of my intended audience.


I’m comfortable using C++ and I think that will become the processing/logic core of the next generation of my apps. That gets me a lot of common source code between platforms.

Jul 7, 2023 4:34 PM in response to MrHoffman

I’m a DBA by trade. Backups are required so I can sleep at night.


Parallels is a given for many reasons. I also expect to run Docker for related but separate purposes.


I expect to be able to run PostgreSQL and Microsoft SQL under Docker. Those aren’t priorities yet, but that will probably change quickly once I find a need for them.


Windows might be necessary on the Mac, but I already have multiple Windows machines. Most of the Windows servers run on the VMWare host now, but they may move to Azure.


I have a handful of 18 TB USB drives for when I am mobile. I’m going to replace my existing SAN, but that will probably be next year. I’m leaning toward another Pure, but I would not have any problem with Synology either.

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Development Macintosh for apps (mostly iPhone)

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.