Foundations of Objective-C App Development

Start Date: 07/05/2020

Course Type: Common Course

Course Link: https://www.coursera.org/learn/objective-c

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

About Course

An introduction to the Objective-C programming language. This will prepare you for more extensive iOS app development and build a foundation for advanced iOS development topics. Objective-C programming requires a Mac laptop or desktop computer. An iOS device is optional if the learner is willing to working exclusively with the simulator. Some learners have been able to work with an OS X virtual machine on Windows, but explaining how to do that is beyond the scope of this course. Upon completing this course, you will be able to: 1. Read and write Objective-C 2. Have a strong grasp of Objective-C objects 3. Organize their code professionally using objects and blocks 4. Prototype several entry-level apps

Course Syllabus

Welcome to Week 2! This week we will be learning about how functions are defined in C and then how methods are defined in Objective-C. We will look at the more complex rules surrounding scoping and encapsulation of variables and functions. We'll end the week learning about Objective-C objects and memory.

Deep Learning Specialization on Coursera

Course Introduction

Foundations of Objective-C App Development This course is all about the underlying concepts, principles, and languages used for developing applications using the Swift programming language and the Objective-C framework for Objective-C apps. It will cover common language constructs and application initialization code patterns, as well as how to share data among C++, Objective-C, and Swift programs, how to use the Objective-C standard, and how to use Swift as a shared development environment. This is the third course in the specialization. The first course covered the basic syntax and the fundamental concepts of Objective-C, and the second course focused on the more advanced syntax and language features that are useful for implementing more advanced objects and classes. Note: This is a targeted intermediate-level course. We expect that most people who take this course to have some basic programming experience, but really no previous programming language experience. This course is intended for people who are looking for general-purpose, high-level understanding of the Objective-C standard, and the language features and conventions that go along with it. We expect that many of you will have already completed the first course in the specialization, "Introduction to Programming in Swift", so you should feel comfortable with the intermediate-level concepts and syntax that this course covers. However, it should be noted that many of the concepts and syntaxes discussed in this course will be very familiar to you if you have taken the "Introduction to Programming in Swift" or "Introduction to C++" courses.Introduction to

Course Tag

iOS App Development Computer Programming Xcode Objective-C

Related Wiki Topic

Article Example
Objective-C After acquiring NeXT in 1996, Apple Computer used OpenStep in its new operating system, OS X. This included Objective-C, NeXT's Objective-C-based developer tool, Project Builder, and its interface design tool, Interface Builder, both now merged into one Xcode application. Most of Apple's current Cocoa API is based on OpenStep interface objects and is the most significant Objective-C environment being used for active development.
Objective-C Objective-C++ is a language variant accepted by the front-end to the GNU Compiler Collection and Clang, which can compile source files that use a combination of C++ and Objective-C syntax. Objective-C++ adds to C++ the extensions that Objective-C adds to C. As nothing is done to unify the semantics behind the various language features, certain restrictions apply:
Objective-C The design and implementation of [[C++]] and Objective-C represent fundamentally different approaches to extending C.
Objective-C Objective-C is a thin layer atop C, and is a "strict superset" of C, meaning that it is possible to compile any C program with an Objective-C compiler, and to freely include C language code within an Objective-C class.
Objective-C Objective-C source code 'implementation' program files usually have .m filename extensions, while Objective-C 'header/interface' files have .h extensions, the same as C header files. Objective-C++ files are denoted with a .mm file extension.
Objective-C At the 2006 Worldwide Developers Conference, Apple announced the release of "Objective-C 2.0," a revision of the Objective-C language to include "modern garbage collection, syntax enhancements, runtime performance improvements, and 64-bit support". Mac OS X v10.5, released in October 2007, included an Objective-C 2.0 compiler. GCC 4.6 supports many new Objective-C features, such as declared and synthesized properties, dot syntax, fast enumeration, optional protocol methods, method/protocol/class attributes, class extensions and a new GNU Objective-C runtime API.
Objective-C Likewise, the language can be implemented atop extant C compilers (in [[GNU Compiler Collection|GCC]], first as a preprocessor, then as a module) rather than as a new compiler. This allows Objective-C to leverage the huge existing collection of C code, libraries, tools, etc. Existing C libraries can be wrapped in Objective-C [[Adapter pattern|wrappers]] to provide an OO-style interface. In this aspect, it is similar to [[GObject]] library and [[Vala (programming language)|Vala]] language, which are widely used in development of [[GTK]] applications.
Objective-C Instead of using an NSEnumerator object or indices to iterate through a collection, Objective-C 2.0 offers the fast enumeration syntax. In Objective-C 2.0, the following loops are functionally equivalent, but have different performance traits.
Objective-C One notable difference is that Objective-C provides runtime support for [[reflection (computer science)|reflective]] features, whereas C++ adds only a small amount of runtime support to C. In Objective-C, an object can be queried about its own properties, e.g., whether it will respond to a certain message. In C++, this is not possible without the use of external libraries.
Objective-C This "modern" syntax is no longer supported in current dialects of the Objective-C language.
Objective-C The [[Clang]] compiler suite, part of the [[LLVM]] project, implements Objective-C, and other languages.
Objective-C Because Objective-C uses dynamic runtime typing and because all method calls are function calls (or, in some cases, syscalls), many common performance optimizations cannot be applied to Objective-C methods (for example: inlining, constant propagation, interprocedural optimizations, and scalar replacement of aggregates). This limits the performance of Objective-C abstractions relative to similar abstractions in languages such as C++ where such optimizations are possible.
Objective-C Objective-C implementations use a thin [[Run time system|runtime system]] written in C, which adds little to the size of the application. In contrast, most object-oriented systems at the time that it was created used large [[virtual machine]] runtimes. Programs written in Objective-C tend to be not much larger than the size of their code and that of the libraries (which generally do not need to be included in the software distribution), in contrast to Smalltalk systems where a large amount of memory was used just to open a window. Objective-C applications tend to be larger than similar C or C++ applications because Objective-C dynamic typing does not allow methods to be stripped or inlined. Since the programmer has such freedom to delegate, forward calls, build selectors on the fly and pass them to the runtime system, the Objective-C compiler cannot assume it is safe to remove unused methods or to inline calls.
Objective-C Since Objective-C is a strict superset of C, it does not treat C primitive types as [[first-class object]]s.
Objective-C In addition to C's style of procedural programming, C++ directly supports certain forms of [[object-oriented programming]], [[generic programming]], and [[metaprogramming]]. C++ also comes with [[C++ standard library|a large standard library]] that includes [[Sequence container (C++)|several container classes]]. Similarly, Objective-C adds [[Polymorphism in object-oriented programming|object-oriented programming]], [[dynamic typing]], and [[reflection (computer science)|reflection]] to C. Objective-C does not provide a standard library "per se", but in most places where Objective-C is used, it is used with an [[OpenStep]]-like library such as [[OPENSTEP]], [[Cocoa (API)|Cocoa]], or [[GNUstep]], which provides functionality similar to C++'s standard library.
Objective-C [[Generic programming]] and metaprogramming can be implemented in both languages using [[runtime polymorphism]]. In C++ this takes the form of [[virtual function]]s and [[runtime type identification]], while Objective-C offers dynamic typing and reflection. Objective-C lacks compile-time polymorphism ([[generic function]]s) entirely, while C++ supports it via [[function overloading]] and [[Template (C++)|templates]].
Objective-C Love and Cox eventually formed a new venture, Productivity Products International (PPI), to commercialize their product, which coupled an Objective-C compiler with class libraries. In 1986, Cox published the main description of Objective-C in its original form in the book "Object-Oriented Programming, An Evolutionary Approach". Although he was careful to point out that there is more to the problem of reusability than just the language, Objective-C often found itself compared feature for feature with other languages.
Objective-C The use of reflection is part of the wider distinction between dynamic (run-time) features and static (compile-time) features of a language. Although Objective-C and C++ each employ a mix of both features, Objective-C is decidedly geared toward run-time decisions while C++ is geared toward compile-time decisions. The tension between dynamic and static programming involves many of the classic trade-offs in programming: dynamic features add flexibility, static features add speed and type checking.
Objective-C Return types can be any standard C type, a pointer to a generic Objective-C object, a pointer to a specific type of object such as NSArray *, NSImage *, or NSString *, or a pointer to the class to which the method belongs (instancetype). The default return type is the generic Objective-C type id.
Objective-C In order to circumvent the terms of the GPL, NeXT had originally intended to ship the Objective-C frontend separately, allowing the user to link it with GCC to produce the compiler executable. After being initially accepted by Richard M. Stallman, this plan was rejected after Stallman consulted with GNU's lawyers and NeXT agreed to make Objective-C part of GCC.