SlideShare uma empresa Scribd logo
1 de 35
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.

Mais conteúdo relacionado

Mais procurados

Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Lecture 2, c++(complete reference,herbet sheidt)chapter-12Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Lecture 2, c++(complete reference,herbet sheidt)chapter-12Abu Saleh
 
Objective-Cひとめぐり
Objective-CひとめぐりObjective-Cひとめぐり
Objective-CひとめぐりKenji Kinukawa
 
Memory Management C++ (Peeling operator new() and delete())
Memory Management C++ (Peeling operator new() and delete())Memory Management C++ (Peeling operator new() and delete())
Memory Management C++ (Peeling operator new() and delete())Sameer Rathoud
 
Declarative Name Binding and Scope Rules
Declarative Name Binding and Scope RulesDeclarative Name Binding and Scope Rules
Declarative Name Binding and Scope RulesEelco Visser
 
JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )Victor Verhaagen
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaSandesh Sharma
 
Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)Abu Saleh
 
Constructor and Destructor in c++
Constructor  and Destructor in c++Constructor  and Destructor in c++
Constructor and Destructor in c++aleenaguen
 
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchObjective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchMatteo Battaglio
 
Advanced Java Practical File
Advanced Java Practical FileAdvanced Java Practical File
Advanced Java Practical FileSoumya Behera
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Kel Cecil
 
Generics in .NET, C++ and Java
Generics in .NET, C++ and JavaGenerics in .NET, C++ and Java
Generics in .NET, C++ and JavaSasha Goldshtein
 
Java programming lab_manual_by_rohit_jaiswar
Java programming lab_manual_by_rohit_jaiswarJava programming lab_manual_by_rohit_jaiswar
Java programming lab_manual_by_rohit_jaiswarROHIT JAISWAR
 
Constructor in c++
Constructor in c++Constructor in c++
Constructor in c++Jay Patel
 

Mais procurados (20)

Memory management in c++
Memory management in c++Memory management in c++
Memory management in c++
 
Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Lecture 2, c++(complete reference,herbet sheidt)chapter-12Lecture 2, c++(complete reference,herbet sheidt)chapter-12
Lecture 2, c++(complete reference,herbet sheidt)chapter-12
 
Objective-Cひとめぐり
Objective-CひとめぐりObjective-Cひとめぐり
Objective-Cひとめぐり
 
Memory Management C++ (Peeling operator new() and delete())
Memory Management C++ (Peeling operator new() and delete())Memory Management C++ (Peeling operator new() and delete())
Memory Management C++ (Peeling operator new() and delete())
 
Declarative Name Binding and Scope Rules
Declarative Name Binding and Scope RulesDeclarative Name Binding and Scope Rules
Declarative Name Binding and Scope Rules
 
JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )
 
Constructors & destructors
Constructors & destructorsConstructors & destructors
Constructors & destructors
 
iOS Basic
iOS BasiciOS Basic
iOS Basic
 
Constructor
ConstructorConstructor
Constructor
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharma
 
Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)
 
Constructor and Destructor in c++
Constructor  and Destructor in c++Constructor  and Destructor in c++
Constructor and Destructor in c++
 
Objective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central DispatchObjective-C Blocks and Grand Central Dispatch
Objective-C Blocks and Grand Central Dispatch
 
Advanced Java Practical File
Advanced Java Practical FileAdvanced Java Practical File
Advanced Java Practical File
 
Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!Hey! There's OCaml in my Rust!
Hey! There's OCaml in my Rust!
 
Generics in .NET, C++ and Java
Generics in .NET, C++ and JavaGenerics in .NET, C++ and Java
Generics in .NET, C++ and Java
 
srgoc
srgocsrgoc
srgoc
 
Class method
Class methodClass method
Class method
 
Java programming lab_manual_by_rohit_jaiswar
Java programming lab_manual_by_rohit_jaiswarJava programming lab_manual_by_rohit_jaiswar
Java programming lab_manual_by_rohit_jaiswar
 
Constructor in c++
Constructor in c++Constructor in c++
Constructor in c++
 

Destaque

Android session 2-behestee
Android session 2-behesteeAndroid session 2-behestee
Android session 2-behesteeHussain Behestee
 
Android session 3-behestee
Android session 3-behesteeAndroid session 3-behestee
Android session 3-behesteeHussain Behestee
 
Android session 4-behestee
Android session 4-behesteeAndroid session 4-behestee
Android session 4-behesteeHussain Behestee
 
iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1Hussain Behestee
 
Echelon MillionAir magazine
Echelon MillionAir magazineEchelon MillionAir magazine
Echelon MillionAir magazineEchelonExp
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general infoTomi Juhola
 
ASP.NET MVC introduction
ASP.NET MVC introductionASP.NET MVC introduction
ASP.NET MVC introductionTomi Juhola
 
Ultimate Buenos Aires Tango Experience
Ultimate Buenos Aires Tango ExperienceUltimate Buenos Aires Tango Experience
Ultimate Buenos Aires Tango ExperienceEchelonExp
 
jQuery introduction
jQuery introductionjQuery introduction
jQuery introductionTomi Juhola
 

Destaque (15)

Android session-5-sajib
Android session-5-sajibAndroid session-5-sajib
Android session-5-sajib
 
Android session 2-behestee
Android session 2-behesteeAndroid session 2-behestee
Android session 2-behestee
 
Android session 3-behestee
Android session 3-behesteeAndroid session 3-behestee
Android session 3-behestee
 
Android session 4-behestee
Android session 4-behesteeAndroid session 4-behestee
Android session 4-behestee
 
iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1
 
Android session-1-sajib
Android session-1-sajibAndroid session-1-sajib
Android session-1-sajib
 
Echelon MillionAir magazine
Echelon MillionAir magazineEchelon MillionAir magazine
Echelon MillionAir magazine
 
CodeCamp general info
CodeCamp general infoCodeCamp general info
CodeCamp general info
 
ASP.NET MVC introduction
ASP.NET MVC introductionASP.NET MVC introduction
ASP.NET MVC introduction
 
iOS Training Session-3
iOS Training Session-3iOS Training Session-3
iOS Training Session-3
 
Ultimate Buenos Aires Tango Experience
Ultimate Buenos Aires Tango ExperienceUltimate Buenos Aires Tango Experience
Ultimate Buenos Aires Tango Experience
 
jQuery introduction
jQuery introductionjQuery introduction
jQuery introduction
 
บทนำ
บทนำบทนำ
บทนำ
 
Design Portfolio
Design PortfolioDesign Portfolio
Design Portfolio
 
manejo de cables
manejo de cablesmanejo de cables
manejo de cables
 

Semelhante a iOS Session-2

Semelhante a iOS Session-2 (20)

Objective c intro (1)
Objective c intro (1)Objective c intro (1)
Objective c intro (1)
 
Objective c
Objective cObjective c
Objective c
 
Runtime
RuntimeRuntime
Runtime
 
201005 accelerometer and core Location
201005 accelerometer and core Location201005 accelerometer and core Location
201005 accelerometer and core Location
 
Cocoa for Web Developers
Cocoa for Web DevelopersCocoa for Web Developers
Cocoa for Web Developers
 
Day 2
Day 2Day 2
Day 2
 
11. session 11 functions and objects
11. session 11   functions and objects11. session 11   functions and objects
11. session 11 functions and objects
 
constructors.pptx
constructors.pptxconstructors.pptx
constructors.pptx
 
Pavel kravchenko obj c runtime
Pavel kravchenko obj c runtimePavel kravchenko obj c runtime
Pavel kravchenko obj c runtime
 
Objective c slide I
Objective c slide IObjective c slide I
Objective c slide I
 
Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.Object Trampoline: Why having not the object you want is what you need.
Object Trampoline: Why having not the object you want is what you need.
 
Sonu wiziq
Sonu wiziqSonu wiziq
Sonu wiziq
 
01 objective-c session 1
01  objective-c session 101  objective-c session 1
01 objective-c session 1
 
JavaScript(Es5) Interview Questions & Answers
JavaScript(Es5)  Interview Questions & AnswersJavaScript(Es5)  Interview Questions & Answers
JavaScript(Es5) Interview Questions & Answers
 
Chap-2 Classes & Methods.pptx
Chap-2 Classes & Methods.pptxChap-2 Classes & Methods.pptx
Chap-2 Classes & Methods.pptx
 
Ios development
Ios developmentIos development
Ios development
 
Advance Java
Advance JavaAdvance Java
Advance Java
 
Understanding linq
Understanding linqUnderstanding linq
Understanding linq
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
 
Getting Input from User
Getting Input from UserGetting Input from User
Getting Input from User
 

Último

Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterMateoGardella
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfChris Hunter
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Shubhangi Sonawane
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.MateoGardella
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 

Último (20)

Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 

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