SlideShare a Scribd company logo
Session - 2




Presented By: A.T.M. Hassan Uzzaman
Agendas

 OOP Concepts in Objective-c
 Delegates and callbacks in Cocoa touch
 Table View, Customizing Cells
 PList (Read, write)
Obj-C vs C#
           Obj-C                                C#
 [[object method] method];           obj.method().method();
       Memory Pools                   Garbage Collection
             +/-                         static/instance
             nil                                null
(void)methodWithArg:(int)value {}   void method(int value) {}
            YES NO                          true false
           @protocol                         interface
Classes from Apple (and some history)
 NSString is a string of text that is immutable.
 NSMutableString is a string of text that is mutable.
 NSArray is an array of objects that is immutable.
 NSMutableArray is an array of objects that is
  mutable.
 NSNumber holds a numeric value.
Objective-C Characteristics and
Symbols
 Written differently from other languages
 Object communicate with messages—does not “call” a
  method.
 @ indicates a compiler directive. Objective-C has own
  preprocessor that processes @ directives.
 # indicates a preprocessor directive. Processes any #
  before it compiles.
Declare in Header file (.h)
Each method will start with either a – or a + symbol.
  - indicates an instance method (the receiver is an
  instance)
  +indicates a class method (the receiver is a class name)
Example of a instance method
-(IBAction)buttonPressed:(id)sender;
Or with one argument
-(void)setFillColor:(NSColor*) newFillColor;
Parts of a Method in a Class
 Implement the method in the .m file
 Example:
-(IBAction)buttonPressed:(id)sender{
do code here….
}
 Example 2:
-(void) setOutlineColor:(NSColor*) outlineColor{
  do code here….
}
Class Declaration (Interface)
                                     Node.h
#import <Cocoa/Cocoa.h>
@interface Node : NSObject {
        Node *link;
        int contents;
                                 Class is Node who’s parent is
}                                NSObject
+(id)new;
                                 {   class variables }
-(void)setContent:(int)number;
-(void)setLink:(Node*)next;
-(int)getContent;                +/- private/public methods of Class
-(Node*)getLink;
@end
                                 Class variables are private
Class Definition (Implementation)
#import “Node.h”
@implementation Node                Node.m
+(id)new
          { return [Node alloc];}
-(void)setContent:(int)number
          {contents = number;}
-(void)setLink:(Node*)next {
          [link autorelease];
          link = [next retain];     Like your C++ .cpp
}                                   file
-(int)getContent
          {return contents;}
-(Node*)getLink                     >>just give the
          {return link;}            methods here
@end
Creating class instances
Creating an Object
    ClassName *object = [[ClassName alloc] init];
    ClassName *object = [[ClassName alloc] initWith* ];
         NSString* myString = [[NSString alloc] init];
         Nested method call. The first is the alloc method called on NSString itself.
            This is a relatively low-level call which reserves memory and instantiates an
            object. The second is a call to init on the new object. The init implementation
            usually does basic setup, such as creating instance variables. The details of
            that are unknown to you as a client of the class. In some cases, you may use a
            different version of init which takes input:



    ClassName *object = [ClassName method_to_create];
         NSString* myString = [NSString string];
         Some classes may define a special method that will in essence call alloc followed by some
          kind of init
Reference [[Person alloc] init];action
Person *person =
                 counting in
 Retain count begins at 1 with +alloc
[person retain];
 Retain count increases to 2 with -retain
[person release];
 Retain count decreases to 1 with -release
[person release];
 Retain count decreases to 0, -dealloc automatically
called
Autorelease
 Example: returning a newly created object
-(NSString *)fullName
{
  NSString *result;
  result = [[NSString alloc] initWithFormat:@“%@
%@”, firstName, lastName];

    [result autorelease]

    return result;
}
Method Names & Autorelease
 Methods whose names includes alloc, copy, or new return a retained
  object that the caller needs to release

NSMutableString *string = [[NSMutableString alloc] init];
// We are responsible for calling -release or -autorelease
[string autorelease];

 All other methods return autoreleased objects

NSMutableString *string = [NSMutableString string];
// The method name doesn’t indicate that we need to release
it, so don’t

 This is a convention- follow it in methods you define!
Polymorphism
 Just as the fields of a C structure are in a protected
  namespace, so are an object’s instance variables.
 Method names are also protected. Unlike the names of
  C functions, method names aren’t global symbols. The
  name of a method in one class can’t conflict with
  method names in other classes; two very different
  classes can implement identically named methods.
 Objective-C implements polymorphism of method
  names, but not parameter or operator overloading.
Inheritance




 Class Hierarchies
 Subclass Definitions
 Uses of Inheritance
protocol
Protocol (Continue..)
Categories
Categories (Continue..)
Categories (Continue..)
NSDictionary
 Immutable hash table. Look up objects using a key to get a
   value.
+ (id)dictionaryWithObjects:(NSArray *)values forKeys:(NSArray *)keys;
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
 Creation example:
NSDictionary *base = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithInt:2], @“binary”,
                          [NSNumber numberWithInt:16], @“hexadecimal”, nil];
 Methods
              - (int)count;
              - (id)objectForKey:(id)key;
              - (NSArray *)allKeys;
              - (NSArray *)allValues;
see documentation (apple.com) for more details
NSMutableDictionary
 Changeable
+ (id)dictionaryWithObjects:(NSArray *)values forKeys:(NSArray *)keys;
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;

 Creation :
+ (id)dictionary; //creates empty dictionary
 Methods
- (void)setObject:(id)anObject forKey:(id)key;
- (void)removeObjectForKey:(id)key;
- (void)removeAllObjects;
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;


see documentation (apple.com) for more details
We will see this in

Property list (plist)                                            practice later


 A collection of collections
 Specifically, it is any graph of objects containing only the following classes:
          NSArray, NSDictionary, NSNumber, NSString, NSDate, NSData

 Example1 : NSArray is a Property List if all its members are too
     NSArray of NSString is a Property List
     NSArray of NSArray as long as those NSArray’s members are Property Lists.
 Example 2: NSDictionary is one only if all keys and values are too

 Why define this term?
     Because the SDK has a number of methods which operate on Property Lists.
     Usually to read them from somewhere or write them out to somewhere.
     [plist writeToFile:(NSString *)path atomically:(BOOL)]; // plist is NSArray or
      NSDictionary
NSUserDefaults
 Lightweight storage of Property Lists.
 an NSDictionary that persists between launches of
  your application.
 Not a full-on database, so only store small things like
  user preferences.
Use NSError for Most Errors
 No network connectivity
 The remote web service may be inaccessible
 The remote web service may not be able to serve the
  information you request
 The data you receive may not match what you were
  expecting
Some Methods Pass Errors by
Reference
Exceptions Are Used for
Programmer Errors
Delegates and callbacks in
      Cocoa touch
SimpleTable App
How UITableDataSource work
SimpleTable App With Image
Simple Table App With Diff Image
SimpleTableView Custom Cell
Questions ?
Thank you.

More Related Content

What's hot (20)

DOCX
Memory management in c++
Syed Hassan Kazmi
 
PPTX
Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Abu Saleh
 
KEY
Objective-Cひとめぐり
Kenji Kinukawa
 
PDF
Memory Management C++ (Peeling operator new() and delete())
Sameer Rathoud
 
PDF
Declarative Name Binding and Scope Rules
Eelco Visser
 
PDF
JavaScript introduction 1 ( Variables And Values )
Victor Verhaagen
 
PPTX
Constructors & destructors
ForwardBlog Enewzletter
 
PPTX
iOS Basic
Duy Do Phan
 
PPT
Constructor
poonamchopra7975
 
PPT
Core java by a introduction sandesh sharma
Sandesh Sharma
 
PPTX
Lecture 4.2 c++(comlete reference book)
Abu Saleh
 
PPTX
Constructor and Destructor in c++
aleenaguen
 
PDF
Objective-C Blocks and Grand Central Dispatch
Matteo Battaglio
 
PDF
Advanced Java Practical File
Soumya Behera
 
PDF
Hey! There's OCaml in my Rust!
Kel Cecil
 
PPTX
Generics in .NET, C++ and Java
Sasha Goldshtein
 
DOCX
srgoc
Gaurav Singh
 
PPS
Class method
kamal kotecha
 
DOCX
Java programming lab_manual_by_rohit_jaiswar
ROHIT JAISWAR
 
PPTX
Constructor in c++
Jay Patel
 
Memory management in c++
Syed Hassan Kazmi
 
Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Abu Saleh
 
Objective-Cひとめぐり
Kenji Kinukawa
 
Memory Management C++ (Peeling operator new() and delete())
Sameer Rathoud
 
Declarative Name Binding and Scope Rules
Eelco Visser
 
JavaScript introduction 1 ( Variables And Values )
Victor Verhaagen
 
Constructors & destructors
ForwardBlog Enewzletter
 
iOS Basic
Duy Do Phan
 
Constructor
poonamchopra7975
 
Core java by a introduction sandesh sharma
Sandesh Sharma
 
Lecture 4.2 c++(comlete reference book)
Abu Saleh
 
Constructor and Destructor in c++
aleenaguen
 
Objective-C Blocks and Grand Central Dispatch
Matteo Battaglio
 
Advanced Java Practical File
Soumya Behera
 
Hey! There's OCaml in my Rust!
Kel Cecil
 
Generics in .NET, C++ and Java
Sasha Goldshtein
 
Class method
kamal kotecha
 
Java programming lab_manual_by_rohit_jaiswar
ROHIT JAISWAR
 
Constructor in c++
Jay Patel
 

Viewers also liked (15)

PPTX
Android session-5-sajib
Hussain Behestee
 
PPTX
Android session 2-behestee
Hussain Behestee
 
PPTX
Android session 3-behestee
Hussain Behestee
 
PPTX
Android session 4-behestee
Hussain Behestee
 
PPTX
iOS app dev Training - Session1
Hussain Behestee
 
PPTX
Android session-1-sajib
Hussain Behestee
 
PDF
Echelon MillionAir magazine
EchelonExp
 
PPTX
CodeCamp general info
Tomi Juhola
 
PPT
ASP.NET MVC introduction
Tomi Juhola
 
PPT
iOS Training Session-3
Hussain Behestee
 
PPT
Ultimate Buenos Aires Tango Experience
EchelonExp
 
PPT
jQuery introduction
Tomi Juhola
 
DOC
บทนำ
Sirisuda Sirisinha
 
PDF
Design Portfolio
dianewichern
 
PDF
manejo de cables
Kenneth Medina
 
Android session-5-sajib
Hussain Behestee
 
Android session 2-behestee
Hussain Behestee
 
Android session 3-behestee
Hussain Behestee
 
Android session 4-behestee
Hussain Behestee
 
iOS app dev Training - Session1
Hussain Behestee
 
Android session-1-sajib
Hussain Behestee
 
Echelon MillionAir magazine
EchelonExp
 
CodeCamp general info
Tomi Juhola
 
ASP.NET MVC introduction
Tomi Juhola
 
iOS Training Session-3
Hussain Behestee
 
Ultimate Buenos Aires Tango Experience
EchelonExp
 
jQuery introduction
Tomi Juhola
 
บทนำ
Sirisuda Sirisinha
 
Design Portfolio
dianewichern
 
manejo de cables
Kenneth Medina
 
Ad

Similar to iOS Session-2 (20)

ZIP
Day 2
Pat Zearfoss
 
PPT
Objective c
ricky_chatur2005
 
PPTX
Ios development
elnaqah
 
PDF
Никита Корчагин - Programming Apple iOS with Objective-C
DataArt
 
PDF
Iphone course 1
Janet Huang
 
KEY
Fwt ios 5
Pat Zearfoss
 
PDF
201005 accelerometer and core Location
Javier Gonzalez-Sanchez
 
PPT
Objective c intro (1)
David Echeverria
 
PDF
MFF UK - Introduction to iOS
Petr Dvorak
 
ODP
A quick and dirty intro to objective c
Billy Abbott
 
PDF
FI MUNI 2012 - iOS Basics
Petr Dvorak
 
PPT
iOS Application Development
Compare Infobase Limited
 
PDF
Objective-C Is Not Java
Chris Adamson
 
PDF
Intro to Objective C
Ashiq Uz Zoha
 
PDF
iPhone Seminar Part 2
NAILBITER
 
PDF
iPhone dev intro
Vonbo
 
PDF
Beginning to iPhone development
Vonbo
 
PDF
Louis Loizides iOS Programming Introduction
Lou Loizides
 
PDF
iOS Programming Intro
Lou Loizides
 
PPTX
Presentation 1st
Connex
 
Objective c
ricky_chatur2005
 
Ios development
elnaqah
 
Никита Корчагин - Programming Apple iOS with Objective-C
DataArt
 
Iphone course 1
Janet Huang
 
Fwt ios 5
Pat Zearfoss
 
201005 accelerometer and core Location
Javier Gonzalez-Sanchez
 
Objective c intro (1)
David Echeverria
 
MFF UK - Introduction to iOS
Petr Dvorak
 
A quick and dirty intro to objective c
Billy Abbott
 
FI MUNI 2012 - iOS Basics
Petr Dvorak
 
iOS Application Development
Compare Infobase Limited
 
Objective-C Is Not Java
Chris Adamson
 
Intro to Objective C
Ashiq Uz Zoha
 
iPhone Seminar Part 2
NAILBITER
 
iPhone dev intro
Vonbo
 
Beginning to iPhone development
Vonbo
 
Louis Loizides iOS Programming Introduction
Lou Loizides
 
iOS Programming Intro
Lou Loizides
 
Presentation 1st
Connex
 
Ad

Recently uploaded (20)

PPTX
I AM MALALA The Girl Who Stood Up for Education and was Shot by the Taliban...
Beena E S
 
PDF
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
PDF
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
PDF
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
PDF
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
PDF
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
PPTX
2025 Winter SWAYAM NPTEL & A Student.pptx
Utsav Yagnik
 
PPTX
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
PPTX
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 
PPTX
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
PDF
The-Ever-Evolving-World-of-Science (1).pdf/7TH CLASS CURIOSITY /1ST CHAPTER/B...
Sandeep Swamy
 
PPTX
A PPT on Alfred Lord Tennyson's Ulysses.
Beena E S
 
PPT
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
PDF
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PPTX
Unit 2 COMMERCIAL BANKING, Corporate banking.pptx
AnubalaSuresh1
 
PDF
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
PDF
LAW OF CONTRACT ( 5 YEAR LLB & UNITARY LLB)- MODULE-3 - LEARN THROUGH PICTURE
APARNA T SHAIL KUMAR
 
PPTX
STAFF DEVELOPMENT AND WELFARE: MANAGEMENT
PRADEEP ABOTHU
 
PPTX
How to Handle Salesperson Commision in Odoo 18 Sales
Celine George
 
PPTX
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 
I AM MALALA The Girl Who Stood Up for Education and was Shot by the Taliban...
Beena E S
 
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
The dynastic history of the Chahmana.pdf
PrachiSontakke5
 
The History of Phone Numbers in Stoke Newington by Billy Thomas
History of Stoke Newington
 
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
2025 Winter SWAYAM NPTEL & A Student.pptx
Utsav Yagnik
 
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
The-Ever-Evolving-World-of-Science (1).pdf/7TH CLASS CURIOSITY /1ST CHAPTER/B...
Sandeep Swamy
 
A PPT on Alfred Lord Tennyson's Ulysses.
Beena E S
 
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
Unit 2 COMMERCIAL BANKING, Corporate banking.pptx
AnubalaSuresh1
 
Chapter-V-DED-Entrepreneurship: Institutions Facilitating Entrepreneurship
Dayanand Huded
 
LAW OF CONTRACT ( 5 YEAR LLB & UNITARY LLB)- MODULE-3 - LEARN THROUGH PICTURE
APARNA T SHAIL KUMAR
 
STAFF DEVELOPMENT AND WELFARE: MANAGEMENT
PRADEEP ABOTHU
 
How to Handle Salesperson Commision in Odoo 18 Sales
Celine George
 
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 

iOS Session-2

  • 1. Session - 2 Presented By: A.T.M. Hassan Uzzaman
  • 2. Agendas  OOP Concepts in Objective-c  Delegates and callbacks in Cocoa touch  Table View, Customizing Cells  PList (Read, write)
  • 3. Obj-C vs C# Obj-C C# [[object method] method]; obj.method().method(); Memory Pools Garbage Collection +/- static/instance nil null (void)methodWithArg:(int)value {} void method(int value) {} YES NO true false @protocol interface
  • 4. Classes from Apple (and some history)  NSString is a string of text that is immutable.  NSMutableString is a string of text that is mutable.  NSArray is an array of objects that is immutable.  NSMutableArray is an array of objects that is mutable.  NSNumber holds a numeric value.
  • 5. Objective-C Characteristics and Symbols  Written differently from other languages  Object communicate with messages—does not “call” a method.  @ indicates a compiler directive. Objective-C has own preprocessor that processes @ directives.  # indicates a preprocessor directive. Processes any # before it compiles.
  • 6. Declare in Header file (.h) Each method will start with either a – or a + symbol. - indicates an instance method (the receiver is an instance) +indicates a class method (the receiver is a class name) Example of a instance method -(IBAction)buttonPressed:(id)sender; Or with one argument -(void)setFillColor:(NSColor*) newFillColor;
  • 7. Parts of a Method in a Class  Implement the method in the .m file  Example: -(IBAction)buttonPressed:(id)sender{ do code here…. }  Example 2: -(void) setOutlineColor:(NSColor*) outlineColor{ do code here…. }
  • 8. Class Declaration (Interface) Node.h #import <Cocoa/Cocoa.h> @interface Node : NSObject { Node *link; int contents; Class is Node who’s parent is } NSObject +(id)new; { class variables } -(void)setContent:(int)number; -(void)setLink:(Node*)next; -(int)getContent; +/- private/public methods of Class -(Node*)getLink; @end Class variables are private
  • 9. Class Definition (Implementation) #import “Node.h” @implementation Node Node.m +(id)new { return [Node alloc];} -(void)setContent:(int)number {contents = number;} -(void)setLink:(Node*)next { [link autorelease]; link = [next retain]; Like your C++ .cpp } file -(int)getContent {return contents;} -(Node*)getLink >>just give the {return link;} methods here @end
  • 10. Creating class instances Creating an Object ClassName *object = [[ClassName alloc] init]; ClassName *object = [[ClassName alloc] initWith* ];  NSString* myString = [[NSString alloc] init];  Nested method call. The first is the alloc method called on NSString itself. This is a relatively low-level call which reserves memory and instantiates an object. The second is a call to init on the new object. The init implementation usually does basic setup, such as creating instance variables. The details of that are unknown to you as a client of the class. In some cases, you may use a different version of init which takes input: ClassName *object = [ClassName method_to_create];  NSString* myString = [NSString string];  Some classes may define a special method that will in essence call alloc followed by some kind of init
  • 11. Reference [[Person alloc] init];action Person *person = counting in Retain count begins at 1 with +alloc [person retain]; Retain count increases to 2 with -retain [person release]; Retain count decreases to 1 with -release [person release]; Retain count decreases to 0, -dealloc automatically called
  • 12. Autorelease  Example: returning a newly created object -(NSString *)fullName { NSString *result; result = [[NSString alloc] initWithFormat:@“%@ %@”, firstName, lastName]; [result autorelease] return result; }
  • 13. Method Names & Autorelease  Methods whose names includes alloc, copy, or new return a retained object that the caller needs to release NSMutableString *string = [[NSMutableString alloc] init]; // We are responsible for calling -release or -autorelease [string autorelease];  All other methods return autoreleased objects NSMutableString *string = [NSMutableString string]; // The method name doesn’t indicate that we need to release it, so don’t  This is a convention- follow it in methods you define!
  • 14. Polymorphism  Just as the fields of a C structure are in a protected namespace, so are an object’s instance variables.  Method names are also protected. Unlike the names of C functions, method names aren’t global symbols. The name of a method in one class can’t conflict with method names in other classes; two very different classes can implement identically named methods.  Objective-C implements polymorphism of method names, but not parameter or operator overloading.
  • 15. Inheritance  Class Hierarchies  Subclass Definitions  Uses of Inheritance
  • 21. NSDictionary  Immutable hash table. Look up objects using a key to get a value. + (id)dictionaryWithObjects:(NSArray *)values forKeys:(NSArray *)keys; + (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;  Creation example: NSDictionary *base = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:2], @“binary”, [NSNumber numberWithInt:16], @“hexadecimal”, nil];  Methods  - (int)count;  - (id)objectForKey:(id)key;  - (NSArray *)allKeys;  - (NSArray *)allValues; see documentation (apple.com) for more details
  • 22. NSMutableDictionary  Changeable + (id)dictionaryWithObjects:(NSArray *)values forKeys:(NSArray *)keys; + (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;  Creation : + (id)dictionary; //creates empty dictionary  Methods - (void)setObject:(id)anObject forKey:(id)key; - (void)removeObjectForKey:(id)key; - (void)removeAllObjects; - (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary; see documentation (apple.com) for more details
  • 23. We will see this in Property list (plist) practice later  A collection of collections  Specifically, it is any graph of objects containing only the following classes:  NSArray, NSDictionary, NSNumber, NSString, NSDate, NSData  Example1 : NSArray is a Property List if all its members are too  NSArray of NSString is a Property List  NSArray of NSArray as long as those NSArray’s members are Property Lists.  Example 2: NSDictionary is one only if all keys and values are too  Why define this term?  Because the SDK has a number of methods which operate on Property Lists.  Usually to read them from somewhere or write them out to somewhere.  [plist writeToFile:(NSString *)path atomically:(BOOL)]; // plist is NSArray or NSDictionary
  • 24. NSUserDefaults  Lightweight storage of Property Lists.  an NSDictionary that persists between launches of your application.  Not a full-on database, so only store small things like user preferences.
  • 25. Use NSError for Most Errors  No network connectivity  The remote web service may be inaccessible  The remote web service may not be able to serve the information you request  The data you receive may not match what you were expecting
  • 26. Some Methods Pass Errors by Reference
  • 27. Exceptions Are Used for Programmer Errors
  • 28. Delegates and callbacks in Cocoa touch
  • 32. Simple Table App With Diff Image