Objective-C

From Wikicliki
Jump to: navigation, search

Objective-C is a superset of C language and it is called objective-c because it is a object-oriented language. It is used to build Cocoa and Cocoa Touch apps.

On 2 March 2013, I attended a slightly haphazard course "Become a NSZombie, Introduction to iOS" at Plug-In@Blk71.

http://30d.me/challenge/ios/

What one needs in order to program in Objective-C

  • Source Code Editor (Xcode)
  • Compiler (Xcode)
  • Program to design the interface (Interface Builder - which is now built into Xcode)
  • iOS simulator (simulate apps)
  • Debuggers (Instruments - monitor performance)

Get Xcode

Basics

Data types in Objective-C

  • int (integer) [ObjC NSNumber]
  • unsigned int [ObjC NSNumber]
  • float (floating point number) [ObjC NSNumber]
  • double (double precision) [ObjC NSNumber]
  • char (a, b, c - single character)
  • string ("a string")
  • bool (true/false)
  • arrays (NSArray)
  • key value pair (eg: courseName = iOS)
operators still apply as expected
== check if equal
|| or
&& and

Objective C Classes

Instead of calling a method you pass a message to objects. A class is a collection of objects with similar behaviour and properties. Objects of same class have simlar behaviour and properties.

Most common classes:

  • NSInteger
  • NSNumber
  • NSString, NSMutableString (you can modify or add things to mutables)
  • NSSet, NSMutableSet
  • NSArray, NSMutableArray
  • NSDictionary, NSMutableDictionary

Initialisation

  • int myInteger;
  • int myInteger = 42;
  • int myInteger, myInteger2, myInteger3;

Operators

  • operators - as normally expected except there is also "modulo"
  •  % - result will be the remainder from the integer division of the 1st by the 2nd
  • (only for int or long, insert some caveat here about floats and doubles and using fmod)
  • eg: int moduloResult = a % b;

NSLog

String Formatters for the trace/nslog:

Hello World

NSLog(@"Hello World!");

Commenting

//commenting

/* a really long
comment */

Debugging Variables

NSLog(@" a %% b = %i", c)
c = b % a;
int myNum = 7;
NSString *myString = @"Dog";
NSLog(@"The number is %i and the string is %@.", myNum, myString);

If you want a % sign you have to put in %%.

NSLog(@"%@", [NSNumber numberWithInt:i]);

%@ Object
%d, %i signed int
%u     unsigned int
%f     float/double
%1.2f to specific number of decimals
%x, %X hexadecimal int
%o     octal int
%zu    size_t
%p     pointer
%e     float/double (in scientific notation)
%g     float/double (as %f or %e, depending on value)
%s     C string (bytes)
%S     C string (unichar)
%.*s   Pascal string (requires two arguments, pass pstr[0] as the first, pstr+1 as the second)
%c     character
%C     unichar
%lld   long long
%llu   unsigned long long
%Lf    long double

See also