Objective-C logo

Objective-C

The primary programming language you use when writing software for OS X and iOS
4.4K
2.3K
+ 1
490

What is Objective-C?

Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.
Objective-C is a tool in the Languages category of a tech stack.

Who uses Objective-C?

Companies
1992 companies reportedly use Objective-C in their tech stacks, including Uber, Instagram, and Pinterest.

Developers
2353 developers on StackShare have stated that they use Objective-C.

Objective-C Integrations

imgix, Cocoa Touch (iOS), Cocoa (OS X), Uploadcare, and J2ObjC are some of the popular tools that integrate with Objective-C. Here's a list of all 23 tools that integrate with Objective-C.

Why developers like Objective-C?

Here’s a list of reasons why companies and developers use Objective-C
Objective-C Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose Objective-C in their tech stack.

Jesus Dario Rivera Rubio
Jesus Dario Rivera Rubio
Telecomm Engineering at Netbeast · | 10 upvotes · 159.5K views
atNetbeastNetbeast
React Native
React Native
Android SDK
Android SDK
Objective-C
Objective-C
Travis CI
Travis CI
Bitrise
Bitrise
GitHub
GitHub
Firebase
Firebase
Amplitude
Amplitude
Intercom
Intercom
Mailjet
Mailjet
#SmartHome
#End2end

We are using React Native in #SmartHome to share the business logic between Android and iOS team and approach users with a unique brand experience. The drawback is that we require lots of native Android SDK and Objective-C modules, so a good part of the invested time is there. The gain for a app that relies less on native communication, sensors and OS tools should be even higher.

Also it helps us set different testing stages: we use Travis CI for the javascript (business logic), Bitrise to run build tests and @Detox for #end2end automated user tests.

We use a microservices structure on top of Zeit's @now that read from firebase. We use JWT auth to authenticate requests among services and from users, following GitHub philosophy of using the same infrastructure than its API consumers. Firebase is used mainly as a key-value store between services and as a backup database for users. We also use its authentication mechanisms.

You can be super locked-in if you also rely on it's analytics, but we use Amplitude for that, which offers us great insights. Intercom for communications with end-user and Mailjet for marketing.

See more
Conor Myhrvold
Conor Myhrvold
Tech Brand Mgr, Office of CTO at Uber · | 9 upvotes · 483.5K views
atUber TechnologiesUber Technologies
RIBs
RIBs
Objective-C
Objective-C
Swift
Swift

Excerpts from how we developed (and subsequently open sourced) Uber's cross-platform mobile architecture framework, RIBs , going from Objective-C to Swift in the process for iOS: https://github.com/uber/RIBs

Uber’s new application architecture (RIBs) extensively uses protocols to keep its various components decoupled and testable. We used this architecture for the first time in our new rider application and moved our primary language from Objective-C to Swift. Since Swift is a very static language, unit testing became problematic. Dynamic languages have good frameworks to build test mocks, stubs, or stand-ins by dynamically creating or modifying existing concrete classes.

Needless to say, we were not very excited about the additional complexity of manually writing and maintaining mock implementations for each of our thousands of protocols.

The information required to generate mock classes already exists in the Swift protocol. For Uber’s use case, we set out to create tooling that would let engineers automatically generate test mocks for any protocol they wanted by simply annotating them.

The iOS codebase for our rider application alone incorporates around 1,500 of these generated mocks. Without our code generation tool, all of these would have to be written and maintained by hand, which would have made testing much more time-intensive. Auto-generated mocks have contributed a lot to the unit test coverage that we have today.

We built these code generation tools ourselves for a number of reasons, including that there weren’t many open source tools available at the time we started our effort. Today, there are some great open source tools to generate resource accessors, like SwiftGen. And Sourcery can help you with generic code generation needs:

https://eng.uber.com/code-generation/ https://eng.uber.com/driver-app-ribs-architecture/

(GitHub : https://github.com/uber/RIBs )

See more
Julien DeFrance
Julien DeFrance
Principal Software Engineer at Tophatter · | 8 upvotes · 61.6K views
atSmartZipSmartZip
Xcode
Xcode
Objective-C
Objective-C
Android Studio
Android Studio
React Native
React Native
#MobileDev

As a Engineering Manager & Director at SmartZip, I had a mix of front-end, back-end, #mobile engineers reporting to me.

Sprints after sprints, I noticed some inefficiencies on the MobileDev side. People working multiple sprints in a row on their Xcode / Objective-C codebase while some others were working on Android Studio. After which, QA & Product ensured both applications were in sync, on a UI/UX standpoint, creating addional work, which also happened to be extremely costly.

Our resources being so limited, my role was to stop this bleeding and keep my team productive and their time, valuable.

After some analysis, discussions, proof of concepts... etc. We decided to move to a single codebase using React Native so our velocity would increase.

After some initial investment, our initial assumptions were confirmed and we indeed started to ship features a lot faster than ever before. Also, our engineers found a way to perform this upgrade incrementally, so the initial platform-specific codebase wouldn't have to entirely be rewritten at once but only gradually and at will.

Feedback around React Native was very positive. And I doubt - for the kind of application we had - no one would want to go back to two or more code bases. Our application was still as Native as it gets. And no feature or device capability was compromised.

See more
StackShare Editors
StackShare Editors
Rails
Rails
Node.js
Node.js
Python
Python
React
React
Java
Java
Ruby
Ruby
Go
Go
Swift
Swift
Objective-C
Objective-C
jQuery
jQuery
Angular
Angular

By mid-2015, around the time of the Series E, the Digital department at WeWork had grown to more than 40 people to support the company’s growing product needs.

By then, they’d migrated the main website off of WordPress to Ruby on Rails, and a combination React, Angular, and jQuery, though there were efforts to move entirely to React for the front-end.

The backend was structured around a microservices architecture built partially in Node.js, along with a combination of Ruby, Python, Bash, and Go. Swift/Objective-C and Java powered the mobile apps.

These technologies power the listings on the website, as well as various internal tools, like community manager dashboards as well as RFID hardware for access management.

See more
Jorge Cortell
Jorge Cortell
Founder & CEO at Kanteron Systems · | 3 upvotes · 3.1K views
atKanteron SystemsKanteron Systems
Objective-C
Objective-C

We only use Objective-C because historically we participated in the development of an open source MacOSX-only radiology workstation (Osirix). When the project decided to turn its back to open source, we joined others who felt betrayed and forked it (Horos). But ever since, we have decided to only develop browser-based multiplatform software.

See more
StackShare Editors
StackShare Editors
| 2 upvotes · 16K views
atUber TechnologiesUber Technologies
Java
Java
Swift
Swift
Gradle
Gradle
Objective-C
Objective-C

At the heart of Uber’s mobile app development are four primary apps: Android rider, Android driver, iOS rider, and iOS driver. Android developers build in Java, iOS in Objective C and Swift. Engineers across both platforms land code into a monolithic code base that ships each week.

They use some third-party libraries, but often build their own, since “Many open source libraries available are general-purpose, which can create binary bloat. For mobile engineering, every kilobyte matters.”

On Android, the build system is Gradle. For the UI, Butter Knife binds views and callbacks to fields and methods via annotation processing, and Picasso provides image loading.

As for iOS, all of the code lives in a monorepo built with Buck. For crash detection, KSCrash reports crashes to the internal reporting framework.

See more

Objective-C Alternatives & Comparisons

What are some alternatives to Objective-C?
Swift
Writing code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast. Swift is ready for your next iOS and OS X project — or for addition into your current app — because Swift code works side-by-side with Objective-C.
Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
Objective-C
Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.
PHP
Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.
JavaScript
JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
See all alternatives

Objective-C's Followers
2257 developers follow Objective-C to keep up with related blogs and decisions.
ChrisBeeson
Furqan Agwan
Võ Thanh Liêm
Lalit Nayyar
Stefanie Berger
Aleix Ventayol
Tien Dat Tran
Gonçalo Feliciano
Andreas Gawelczyk
ken okamura