Object Life Cycle and Memory Management

Size: px
Start display at page:

Download "Object Life Cycle and Memory Management"

Transcription

1 Object Life Cycle and Memory Management

2 Custom Classes

3 Design Phase Create a class Person Determine the superclass NSObject (in this case) What properties should it have? Name, age, whether they can vote What actions can it perform? Cast a ballot

4 Defining a class A public header and a private implementation

5 Class interface declared in header file #import Person: NSObject { // instance variables NSString *name; int age; // method declarations - (NSString *)name; - (void)setname:(nsstring *)value; - (int)age; - (void)setage:(int)age; - (BOOL)canLegallyVote; -

6 Defining a class A public header and a private implementation

7 Implementing custom class Implement setter/getter methods Implement action methods

8 Class Implementation #import Person - (int)age { return age; - (void)setage:(int)value { age = value; //... and other

9 Calling your own methods #import Person - (BOOL)canLegallyVote { return ([self age] >= 18); - (void)castballot { if ([self canlegallyvote]) { // do voting stuff else { NSLog (@ I m not allowed to vote!

10 Superclass methods As we just saw, objects have an implicit variable named self Like this in Java and C++ Can also invoke superclass methods using super - (void)dosomething { // Call superclass implementation first [super dosomething]; // Then do our custom behavior int foo = bar; //...

11 Cross-File Dependencies A dependency is a relationship between two help limit the effects of dependency-caused recompilation. #import Car: NSObject{ Tire *tire[4]; Engine *engine;

12 Object Lifecycle

13 Object Lifecycle Creating objects Memory management Destroying objects

14 Object Layout

15 Object Creation Two step process allocate memory to store the object initialize object state + alloc Class method that knows how much memory is needed - init Instance method to set initial values, perform other setup

16 id anobject = [[SomeClass alloc] init]; if ( anobject ) [anobject someothermessage]; else... Create = Allocate + Initialize Person *person = nil; person = [[Person alloc] init]; Because an init... method might return an object other than the newly allocated receiver, or even return nil, it s important that programs use the value returned by the initialization method, not just that returned by alloc or allocwithzone:. The following code is very dangerous, since it ignores the return of init. id anobject = [SomeClass alloc]; [anobject init]; [anobject someothermessage]; If there s a chance that the init... method might return nil (see Handling Initialization Failure ), then you should check the return value before proceeding:

17 Implementing your own -init method #import Person - (id)init { // allow superclass to initialize its state first if (self = [super init]) { age = 0; name Bob ; // do other initialization... return

18 Another init example - (id)init { // Assign self to value returned by super's designated initializer // Designated initializer for NSObject is init self = [super init]; if (self) { creationdate = [[NSDate alloc] init]; return self;

19 Multiple init methods Classes may define multiple init methods - (id)init; - (id)initwithname:(nsstring *)name; - (id)initwithname:(nsstring *)name age:(int)age; Less specific ones typically call more specific with default values - (id)init { return [self initwithname:@ No Name ]; - (id)initwithname:(nsstring *)name { return [self initwithname:name age:0];

20 Finishing Up With an Object Person *person = nil; person = [[Person alloc] init]; [person setname:@ Jimmy Jones ]; [person setage:32]; [person castballot]; [person dosomethingelse]; // What do we do with person when we re done?

21 Memory Management Allocation Destruction C malloc free Objective-C alloc dealloc Calls must be balanced Otherwise your program may leak or crash However, you ll never call -dealloc directly One exception, we ll see in a bit...

22 Reference Counting Every object has a retain count Defined on NSObject As long as retain count is > 0, object is alive and valid +alloc and -copy create objects with retain count == 1 -retain increments retain count -release decrements retain count When retain count reaches 0, object is destroyed -dealloc method invoked automatically One-way street, once you re in -dealloc there s no turning back

23 Balanced Calls Person *person = nil; person = [[Person alloc] init]; [person setname:@ Jimmy Jones ]; [person setage:32]; [person castballot]; [person dosomethingelse]; // When we re done with person, release it [person release]; // person will be destroyed here

24 Reference counting in action Person *person = [[Person alloc] init]; 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

25 Messaging deallocated objects Person *person = [[Person alloc] init]; //... [person release]; // Object is deallocated [person dosomething]; // Crash! person = nil; [person dosomething]; // No effect

26 Implementing a -dealloc method #import Person - (void)dealloc { // Do any cleanup that s necessary //... // when we re done, call super to clean us up [super

27 #import RetainTracker : // RetainTracker - (id) init { if (self = [super init]) { NSLog (@"init: Retain count of %d.", [self retaincount]); return (self); // init - (void) dealloc { NSLog (@"dealloc called. Bye Bye."); [super dealloc]; // // RetainTracker int main (int argc, const char * argv[]) { RetainTracker *tracker = [RetainTracker new]; // count: 1 [tracker retain]; // count: 2 NSLog (@"%d", [tracker retaincount]); [tracker retain]; // count: 3 NSLog (@"%d", [tracker retaincount]); [tracker release]; // count: 2 NSLog (@"%d", [tracker retaincount]); [tracker release]; // count: 1 NSLog (@"%d", [tracker retaincount]); [tracker retain]; // count 2 NSLog (@"%d", [tracker retaincount]); [tracker release]; // count 1 NSLog (@"%d", [tracker retaincount]); [tracker release]; // count: 0, dealloc it return (0); // main

28 Object Lifecycle Recap Objects begin with a retain count of 1 Increase and decrease with -retain and release When retain count reaches 0, object deallocated automatically You never call dealloc explicitly in your code Exception is calling -[super dealloc] You only deal with alloc, copy, retain, release [Class new]=[[class alloc] init];

29 Object Ownership #import Person : NSObject { // instance variables NSString *name; // Person class owns the name int age; // method declarations - (NSString *)name; - (void)setname:(nsstring *)value; - (int)age; - (void)setage:(int)age; - (BOOL)canLegallyVote; -

30 #import Person Object Ownership - (NSString *)name { return name; - (void)setname:(nsstring *)newname { if (name!= newname) { [name release]; name name = = [newname retain]; copy]; // name s // has retain retain count count has of been 1, we bumped own it up by

31 Releasing Instance Variables #import Person - (void)dealloc { // Do any cleanup that s necessary [name // when we re done, call super to clean us up [super dealloc];

32 Collections and Memory Management id anobject = [aset anyobject]; [aset removeobject:anobject];// if no object other than aset owned anobject, the next line causes a crash [anobject somemessage]; id anobject = [[aset anyobject] retain]; [aset removeobject:anobject]; [anobject somemessage];// remember to send anobject a release message when you have finished with it

33 Autorelease

34 Returning a newly created object - (NSString *)fullname { NSString *result; result = [[NSString alloc] initwithformat:@ %@ %@, firstname, lastname]; [result release]; [result autorelease]; return result; Wrong: result is leaked! Just right: Wrong: result result is released, is released but not too right early! away Caller gets Method valid returns object bogus and could value retain if needed

35 Autoreleasing Objects Calling -autorelease flags an object to be sent release at some point in the future Let s you fulfill your retain/release obligations while allowing an object some additional time to live Makes it much more convenient to manage memory Very useful in methods which return a newly created object

36 How does -autorelease work? Object is added to current autorelease pool Autorelease pools track objects scheduled to be released When the pool itself is released, it sends -release to all its objects UIKit automatically wraps a pool around every event dispatch

37 Autorelease Pools (in pictures)

38 Reference Counting Every object has a retain count Defined on NSObject As long as retain count is > 0, object is alive and valid +alloc and -copy create objects with retain count == 1 -retain increments retain count -release decrements retain count When retain count reaches 0, object is destroyed -dealloc method invoked automatically One-way street, once you re in -dealloc there s no turning back -autorelease?

39 Hanging Onto an Autoreleased Object Many methods return autoreleased objects Remember the naming conventions... They re hanging out in the pool and will get released later If you need to hold onto those objects you need to retain them Bumps up the retain count before the release happens name = [NSMutableString string]; // We want to name to remain valid! [name retain]; //... // Eventually, we ll release it (maybe in our -dealloc?) [name release];

40 #import RetainTracker : // RetainTracker - (id) init { // init if (self = [super init]) { NSLog (@"init: Retain count of %d.", [self retaincount]); return (self); - (void) dealloc { NSLog (@"dealloc called. Bye Bye."); [super dealloc]; int main (int argc, const char * argv[]) { NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; RetainTracker *tracker; tracker = [RetainTracker new]; // count: 1 [tracker retain]; // count: 2 [tracker autorelease]; // count: still 2 [tracker release]; // count: 1 NSLog (@"releasing pool"); [pool release]; // gets nuked, sends release to tracker return (0); // // RetainTracker

41 Side Note: Garbage Collection Autorelease is not garbage collection Objective-C on iphone OS does not have garbage collection

42 Practical Memory Management (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 This is a convention- follow it in methods you define!

43 - (void)printhello { Examples NSString *string; string = [[NSString alloc] initwithstring:@"hello"]; NSLog(string); [string release]; - (void)printhello { NSString *string; string = [NSString stringwithformat:@"hello"]; NSLog(string); - (void)printwindowtitle { NSString *string; string = [mywindow title]; NSLog(string);

44 Keeing the Pool Clean int i; for (i=0; i< ; i++) { id object = [somearray objectindex: i]; NSString *desc=[object description]; // and do something with the description

45 Keeping the Pool Clean NSAutoreleasePool *pool; pool=[[nsautoreleasepool alloc] init]; int i; for (i=0; i< ; i++) { id object = [somearray objectindex: i]; NSString *desc=[object description]; // and do something with the description if (i%1000 ==0) { [pool release]; //[pool drain]; pool = [[NSAutoreleasePool alloc] init];

46 Collection and Object Ownership When you add an object to a collection such as an array, dictionary, or set, the collection takes ownership of it. The collection will relinquish ownership when the object is removed from the collection or when the collection is itself released. NSMutableArray *array; NSUInteger i; //... for (i = 0; i < 10; i++) { NSNumber *conveniencenumber = [NSNumber numberwithinteger:i]; [array addobject:conveniencenumber];

47 NSMutableArray *array; NSUInteger i; Memory Leak //... for (i = 0; i < 10; i++) { NSNumber *allocednumber = [[NSNumber alloc] initwithinteger: i]; [array addobject:allocednumber]; [allocednumber release];

48 Another Leak Example -(void) addnumbertoarray: (float)afloat { NSNumber *anumber = [[NSNumber alloc] initwithfloat:afloat]; [anarray addobject: anumber]; -(void) addnumbertoarray: (float)afloat { NSNumber *anumber = [[NSNumber alloc] initwithfloat:afloat]; [anarray addobject: anumber]; [anumber release]; -(void) addnumbertoarray:(float)afloat { NSNumber *anumber = [NSNumber numberwithfloat:afloat]; [anarray addobject: anumber];

49 Nested Autorelease Pool Cocoa always expects there to be an autorelease pool available. Autorelease pools are arranged in a stack (being nested ). When you create a new autorelease pool, it is added to the top of the stack. When pools are deallocated, they are removed from the stack. When an object is sent an autorelease message, it is added to the current topmost pool for the current thread. The ability to nest autorelease pools means that you can include them in any function or method. A main function may create an autorelease pool and call another function that creates another autorelease pool. A single method might have an autorelease pool for an outer loop, and another autorelease pool for an inner loop.

50 Nested Autorelease Pools What if you release an autorelease pool that is not the top of the stack? this causes all (unreleased) autorelease pools above it on the stack to be released, along with all their objects.

Introduction to Objective-C. Kevin Cathey

Introduction to Objective-C. Kevin Cathey Introduction to Objective-C Kevin Cathey Introduction to Objective-C What are object-oriented systems? What is the Objective-C language? What are objects? How do you create classes in Objective-C? acm.uiuc.edu/macwarriors/devphone

More information

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011 1 Goals of the Lecture Present an introduction to Objective-C 2.0 Coverage of the language will be INCOMPLETE

More information

iphone Objective-C Exercises

iphone Objective-C Exercises iphone Objective-C Exercises About These Exercises The only prerequisite for these exercises is an eagerness to learn. While it helps to have a background in object-oriented programming, that is not a

More information

iphone SDK Enrolled students will be invited to developer program Login to Program Portal Request a Certificate Download and install the SDK

iphone SDK Enrolled students will be invited to developer program Login to Program Portal Request a Certificate Download and install the SDK Objective-C Basics iphone SDK Enrolled students will be invited to developer program Login to Program Portal Request a Certificate Download and install the SDK The First Program in Objective-C #import

More information

Objective-C for Experienced Programmers

Objective-C for Experienced Programmers Objective-C for Experienced Programmers Venkat Subramaniam venkats@agiledeveloper.com twitter: venkat_s Objective-C An Object-Oriented extension to C If you re familiar with C/C++/Java syntax, you re at

More information

Introduction to iphone Development

Introduction to iphone Development Introduction to iphone Development Introduction to iphone Development Contents Task 1 2 3 4 Application Runtime Core Architecture and Life-cycles What s in a bundle? The resources in an app bundle Customizing

More information

Using the Caché Objective-C Binding

Using the Caché Objective-C Binding Using the Caché Objective-C Binding Version 2014.1 25 March 2014 InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com Using the Caché Objective-C Binding Caché Version 2014.1

More information

Key-Value Coding Programming Guide

Key-Value Coding Programming Guide Key-Value Coding Programming Guide Contents Introduction 6 Organization of This Document 6 See Also 7 What Is Key-Value Coding? 8 Key-Value Coding and Scripting 8 Using Key-Value Coding to Simplify Your

More information

MA-WA1920: Enterprise iphone and ipad Programming

MA-WA1920: Enterprise iphone and ipad Programming MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This

More information

Objective-C and Cocoa User Guide and Reference Manual. Version 5.0

Objective-C and Cocoa User Guide and Reference Manual. Version 5.0 Objective-C and Cocoa User Guide and Reference Manual Version 5.0 Copyright and Trademarks LispWorks Objective-C and Cocoa Interface User Guide and Reference Manual Version 5.0 March 2006 Copyright 2006

More information

Creating a Custom Class in Xcode

Creating a Custom Class in Xcode Creating a Custom Class in Xcode By Mark Mudri March 28, 2014 Executive Summary: Making an ios application requires the use of Xcode, an integrated development environment (IDE) developed by Apple. Within

More information

Praktikum Entwicklung von Mediensystemen mit

Praktikum Entwicklung von Mediensystemen mit Praktikum Entwicklung von Mediensystemen mit Wintersemester 2013/2014 Christian Weiß, Dr. Alexander De Luca Today Organization Introduction to ios programming Hello World Assignment 1 2 Organization 6

More information

ios Development Tutorial Nikhil Yadav CSE 40816/60816: Pervasive Health 09/09/2011

ios Development Tutorial Nikhil Yadav CSE 40816/60816: Pervasive Health 09/09/2011 ios Development Tutorial Nikhil Yadav CSE 40816/60816: Pervasive Health 09/09/2011 Healthcare iphone apps Various apps for the iphone available Diagnostic, Diet and Nutrition, Fitness, Emotional Well-being

More information

ios Dev Crib Sheet In the Shadow of C

ios Dev Crib Sheet In the Shadow of C ios Dev Crib Sheet As you dive into the deep end of the ios development pool, the first thing to remember is that the mother ship holds the authoritative documentation for this endeavor http://developer.apple.com/ios

More information

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include

More information

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,

More information

NSPersistentDocument Core Data Tutorial for Mac OS X v10.4. (Retired Document)

NSPersistentDocument Core Data Tutorial for Mac OS X v10.4. (Retired Document) NSPersistentDocument Core Data Tutorial for Mac OS X v10.4. (Retired Document) Contents Introduction to NSPersistentDocument Core Data Tutorial for Mac OS X v10.4 8 Who Should Read This Document 8 Organization

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

INTRODUCTION TO IOS CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 13 02/22/2011

INTRODUCTION TO IOS CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 13 02/22/2011 INTRODUCTION TO IOS CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 13 02/22/2011 1 Goals of the Lecture Present an introduction to ios Program Coverage of the language will be INCOMPLETE We

More information

Objective-C Tutorial

Objective-C Tutorial Objective-C Tutorial OBJECTIVE-C TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com i ABOUT THE TUTORIAL Objective-c tutorial Objective-C is a general-purpose, object-oriented programming

More information

Stack Allocation. Run-Time Data Structures. Static Structures

Stack Allocation. Run-Time Data Structures. Static Structures Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,

More information

Chapter 5 Names, Bindings, Type Checking, and Scopes

Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named

More information

Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer 2008. 1

Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer 2008. 1 Event Driven Simulation in NS2 Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer 2008. 1 Outline Recap: Discrete Event v.s. Time Driven Events and Handlers The Scheduler

More information

ios App Development for Everyone

ios App Development for Everyone ios App Development for Everyone Kevin McNeish Table of Contents Chapter 2 Objective C (Part 6) Referencing Classes Now you re ready to use the Calculator class in the App. Up to this point, each time

More information

CSI 402 Lecture 13 (Unix Process Related System Calls) 13 1 / 17

CSI 402 Lecture 13 (Unix Process Related System Calls) 13 1 / 17 CSI 402 Lecture 13 (Unix Process Related System Calls) 13 1 / 17 System Calls for Processes Ref: Process: Chapter 5 of [HGS]. A program in execution. Several processes are executed concurrently by the

More information

Habanero Extreme Scale Software Research Project

Habanero Extreme Scale Software Research Project Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead

More information

C# and Other Languages

C# and Other Languages C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List

More information

Praktikum Entwicklung von Mediensystemen mit ios

Praktikum Entwicklung von Mediensystemen mit ios Praktikum Entwicklung von Mediensystemen mit ios SS 2011 Michael Rohs michael.rohs@ifi.lmu.de MHCI Lab, LMU München Today Schedule Organization Introduction to ios Exercise 1 2 Schedule Phase 1 Individual

More information

Comp151. Definitions & Declarations

Comp151. Definitions & Declarations Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const

More information

Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)

Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority) Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the

More information

CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.

CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship. CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation

More information

Please note that this SDK will only work with Xcode 3.2.5 or above. If you need an SDK for an older Xcode version please email support.

Please note that this SDK will only work with Xcode 3.2.5 or above. If you need an SDK for an older Xcode version please email support. Mobile Application Analytics ios SDK Instructions SDK version 3.0 Updated: 12/28/2011 Welcome to Flurry Analytics! This file contains: 1. Introduction 2. Integration Instructions 3. Optional Features 4.

More information

Assignment I Walkthrough

Assignment I Walkthrough Assignment I Walkthrough Objective Reproduce the demonstration (building a calculator) given in class. Goals 1. Downloading and installing the ios4 SDK. 2. Creating a new project in Xcode. 3. Defining

More information

Praktikum Entwicklung von Mediensystemen mit ios

Praktikum Entwicklung von Mediensystemen mit ios Praktikum Entwicklung von Mediensystemen mit ios SS 2011 Michael Rohs michael.rohs@ifi.lmu.de MHCI Lab, LMU München Timeline Date Topic/Activity 5.5.2011 Introduction and Overview of the ios Platform 12.5.2011

More information

Static vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer

Static vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer Lecture 10: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis

More information

This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied.

This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied. Hyperloop for ios Programming Guide This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied. Requirements You ll

More information

Performance Improvement In Java Application

Performance Improvement In Java Application Performance Improvement In Java Application Megha Fulfagar Accenture Delivery Center for Technology in India Accenture, its logo, and High Performance Delivered are trademarks of Accenture. Agenda Performance

More information

ECS 165B: Database System Implementa6on Lecture 2

ECS 165B: Database System Implementa6on Lecture 2 ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

From C++ to Objective-C

From C++ to Objective-C From C++ to Objective-C version 2.1 en Pierre Chatelier e-mail: pierre.chatelier@club-internet.fr Copyright c 2005, 2006, 2007, 2008, 2009 Pierre Chatelier English adaptation : Aaron Vegh Document revisions

More information

Developing Applications for ios

Developing Applications for ios Developing Applications for ios Today Introduction to Objective-C (con t) Continue showing Card Game Model with Deck, PlayingCard, PlayingCardDeck Xcode 5 Demonstration Start building the simple Card Game

More information

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go Debugging ESE112 Java Programming: API, Psuedo-Code, Scope It is highly unlikely that you will write code that will work on the first go Bugs or errors Syntax Fixable if you learn to read compiler error

More information

Programming Embedded Systems

Programming Embedded Systems Programming Embedded Systems Lecture 13 Overview of memory management Monday Feb 27, 2012 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/32 Lecture outline Memory architecture of microcontrollers,

More information

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint) TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions

More information

Lecture 1 Introduction to Android

Lecture 1 Introduction to Android These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy

More information

Stacks. Linear data structures

Stacks. Linear data structures Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations

More information

Objective-C Internals

Objective-C Internals Objective-C Internals André Pang Realmac Software Nice license plate, eh? 1 In this talk, we peek under the hood and have a look at Objective-C s engine: how objects are represented in memory, and how

More information

Informatica e Sistemi in Tempo Reale

Informatica e Sistemi in Tempo Reale Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)

More information

Getting Started with the Internet Communications Engine

Getting Started with the Internet Communications Engine Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2

More information

How To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes

How To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes Content Introduction and History File I/O The File System Shell Programming Standard Unix Files and Configuration Processes Programs are instruction sets stored on a permanent medium (e.g. harddisc). Processes

More information

Computer Systems II. Unix system calls. fork( ) wait( ) exit( ) How To Create New Processes? Creating and Executing Processes

Computer Systems II. Unix system calls. fork( ) wait( ) exit( ) How To Create New Processes? Creating and Executing Processes Computer Systems II Creating and Executing Processes 1 Unix system calls fork( ) wait( ) exit( ) 2 How To Create New Processes? Underlying mechanism - A process runs fork to create a child process - Parent

More information

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program. Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to

More information

Last not not Last Last Next! Next! Line Line Forms Forms Here Here Last In, First Out Last In, First Out not Last Next! Call stack: Worst line ever!

Last not not Last Last Next! Next! Line Line Forms Forms Here Here Last In, First Out Last In, First Out not Last Next! Call stack: Worst line ever! ECE 551 C++ Programming, Data structures, and Algorithms Abstract Data Type: Stack Last In First Out (LIFO) 1 2 2 1 4 3 1 3 4 Stacks in Programming Worst line ever! 5 3 1 5 Stacks are not useful for waiting

More information

Introduction to the BackgroundWorker Component in WPF

Introduction to the BackgroundWorker Component in WPF Introduction to the BackgroundWorker Component in WPF An overview of the BackgroundWorker component by JeremyBytes.com The Problem We ve all experienced it: the application UI that hangs. You get the dreaded

More information

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage

More information

Lecture 22: C Programming 4 Embedded Systems

Lecture 22: C Programming 4 Embedded Systems Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human

More information

Code convention document Argus-viewer

Code convention document Argus-viewer Code convention document Projectnaam: Auteur(s): Reviewer(s): Software Process case voor master-studie Software Engineering 2007/2008. Robert Baarda (Q&A) Studentnr.: 5821258 Martijn van Beest (Q&A) Ka-Sing

More information

Efficient Cross-Platform Method Dispatching for Interpreted Languages

Efficient Cross-Platform Method Dispatching for Interpreted Languages Efficient Cross-Platform Method Dispatching for Interpreted Languages Andrew Weinrich 1 Introduction 2007-12-18 2 Adding Methods and Classes to the Objective-C Runtime Most work on modern compilers is

More information

ITP 342 Mobile App Development. Notifications

ITP 342 Mobile App Development. Notifications ITP 342 Mobile App Development Notifications 3 Types Apple provides three different types of notifications in ios: NSNotificationCenter, UILocalNotification (Local Notifications), and Remote (Push) Notifications.

More information

Android Application Development Course Program

Android Application Development Course Program Android Application Development Course Program Part I Introduction to Programming 1. Introduction to programming. Compilers, interpreters, virtual machines. Primitive data types, variables, basic operators,

More information

Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219

Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing

More information

Instance Creation. Chapter

Instance Creation. Chapter Chapter 5 Instance Creation We've now covered enough material to look more closely at creating instances of a class. The basic instance creation message is new, which returns a new instance of the class.

More information

17. November 2015. Übung 1 mit Swift. Architektur verteilter Anwendungen. Thorsten Kober Head Solutions ios/os X, SemVox GmbH

17. November 2015. Übung 1 mit Swift. Architektur verteilter Anwendungen. Thorsten Kober Head Solutions ios/os X, SemVox GmbH 17. November 2015 Übung 1 mit Swift Architektur verteilter Anwendungen Thorsten Kober Head Solutions ios/os X, SemVox GmbH Überblick 1 Einführung 2 Typen, Optionals und Pattern Matching 3 Speichermanagement

More information

Keil C51 Cross Compiler

Keil C51 Cross Compiler Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation

More information

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects

More information

PROGRAMMING CONCEPTS AND EMBEDDED PROGRAMMING IN C, C++ and JAVA: Lesson-4: Data Structures: Stacks

PROGRAMMING CONCEPTS AND EMBEDDED PROGRAMMING IN C, C++ and JAVA: Lesson-4: Data Structures: Stacks PROGRAMMING CONCEPTS AND EMBEDDED PROGRAMMING IN C, C++ and JAVA: Lesson-4: Data Structures: Stacks 1 STACK A structure with a series of data elements with last sent element waiting for a delete operation.

More information

Object Oriented Programming and the Objective-C Programming Language 1.0. (Retired Document)

Object Oriented Programming and the Objective-C Programming Language 1.0. (Retired Document) Object Oriented Programming and the Objective-C Programming Language 1.0 (Retired Document) Contents Introduction to The Objective-C Programming Language 1.0 7 Who Should Read This Document 7 Organization

More information

C++ Overloading, Constructors, Assignment operator

C++ Overloading, Constructors, Assignment operator C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions

More information

C++FA 3.1 OPTIMIZING C++

C++FA 3.1 OPTIMIZING C++ C++FA 3.1 OPTIMIZING C++ Ben Van Vliet Measuring Performance Performance can be measured and judged in different ways execution time, memory usage, error count, ease of use and trade offs usually have

More information

An Introduction to Assembly Programming with the ARM 32-bit Processor Family

An Introduction to Assembly Programming with the ARM 32-bit Processor Family An Introduction to Assembly Programming with the ARM 32-bit Processor Family G. Agosta Politecnico di Milano December 3, 2011 Contents 1 Introduction 1 1.1 Prerequisites............................. 2

More information

No no-argument constructor. No default constructor found

No no-argument constructor. No default constructor found Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and

More information

Lecture 18-19 Data Types and Types of a Language

Lecture 18-19 Data Types and Types of a Language Lecture 18-19 Data Types and Types of a Language April 29, 2014 Data Types and Types of a Language Data, Data Types and Types Type: Generalities Type Systems and Type Safety Type Equivalence, Coercion

More information

Official Android Coding Style Conventions

Official Android Coding Style Conventions 2012 Marty Hall Official Android Coding Style Conventions Originals of Slides and Source Code for Examples: http://www.coreservlets.com/android-tutorial/ Customized Java EE Training: http://courses.coreservlets.com/

More information

Objective C and iphone App

Objective C and iphone App Objective C and iphone App 6 Months Course Description: Understanding the Objective-C programming language is critical to becoming a successful iphone developer. This class is designed to teach you a solid

More information

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1 The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose

More information

An Incomplete C++ Primer. University of Wyoming MA 5310

An Incomplete C++ Primer. University of Wyoming MA 5310 An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages

More information

Mono for Android Activity Lifecycle Activity Lifecycle Concepts and Overview

Mono for Android Activity Lifecycle Activity Lifecycle Concepts and Overview Mono for Android Lifecycle Lifecycle Concepts and Overview Xamarin Inc. BRIEF Overview Activities are a fundamental building block of Android Applications and they can exist in a number of different states.

More information

COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.

COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms. COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation

More information

Tail call elimination. Michel Schinz

Tail call elimination. Michel Schinz Tail call elimination Michel Schinz Tail calls and their elimination Loops in functional languages Several functional programming languages do not have an explicit looping statement. Instead, programmers

More information

Microsoft Tag Scanning SDK for iphone & Android Apps

Microsoft Tag Scanning SDK for iphone & Android Apps Microsoft Tag Scanning SDK for iphone & Android Apps This document provides an overview of the functionality of the Microsoft Tag Scanning SDK, used to integrate Tag scanning into mobile apps on the ios

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

Chapter 8: Bags and Sets

Chapter 8: Bags and Sets Chapter 8: Bags and Sets In the stack and the queue abstractions, the order that elements are placed into the container is important, because the order elements are removed is related to the order in which

More information

Project 2: Bejeweled

Project 2: Bejeweled Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command

More information

Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.

Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved. The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret

More information

CSC230 Getting Starting in C. Tyler Bletsch

CSC230 Getting Starting in C. Tyler Bletsch CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly

More information

ios App Development for Everyone

ios App Development for Everyone ios App Development for Everyone Kevin McNeish Table of Contents Chapter 2 Objective C (Part 1) When I first started writing ios Apps, coding in Objective-C was somewhat painful. Like stuck-in-acheckout-line-behind-the-old-woman-writing-a-personal-check

More information

Bypassing Browser Memory Protections in Windows Vista

Bypassing Browser Memory Protections in Windows Vista Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov markdowd@au1.ibm.com alex@sotirov.net Setting back browser security by 10 years Part I: Introduction Thesis Introduction

More information

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.

Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio. Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used

More information

Your First ios Application

Your First ios Application Your First ios Application General 2011-06-06 Apple Inc. 2011 Apple Inc. All rights reserved. Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential

More information

Java EE Web Development Course Program

Java EE Web Development Course Program Java EE Web Development Course Program Part I Introduction to Programming 1. Introduction to programming. Compilers, interpreters, virtual machines. Primitive types, variables, basic operators, expressions,

More information

Sources: On the Web: Slides will be available on:

Sources: On the Web: Slides will be available on: C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,

More information

Cucumber: Finishing the Example. CSCI 5828: Foundations of Software Engineering Lecture 23 04/09/2012

Cucumber: Finishing the Example. CSCI 5828: Foundations of Software Engineering Lecture 23 04/09/2012 Cucumber: Finishing the Example CSCI 5828: Foundations of Software Engineering Lecture 23 04/09/2012 1 Goals Review the contents of Chapters 9 and 10 of the Cucumber textbook Testing Asynchronous Systems

More information

University of Twente. A simulation of the Java Virtual Machine using graph grammars

University of Twente. A simulation of the Java Virtual Machine using graph grammars University of Twente Department of Computer Science A simulation of the Java Virtual Machine using graph grammars Master of Science thesis M. R. Arends, November 2003 A simulation of the Java Virtual Machine

More information

Building a Multi-Threaded Web Server

Building a Multi-Threaded Web Server Building a Multi-Threaded Web Server In this lab we will develop a Web server in two steps. In the end, you will have built a multi-threaded Web server that is capable of processing multiple simultaneous

More information

1 Description of The Simpletron

1 Description of The Simpletron Simulating The Simpletron Computer 50 points 1 Description of The Simpletron In this assignment you will write a program to simulate a fictional computer that we will call the Simpletron. As its name implies

More information

Introduction to Java

Introduction to Java Introduction to Java The HelloWorld program Primitive data types Assignment and arithmetic operations User input Conditional statements Looping Arrays CSA0011 Matthew Xuereb 2008 1 Java Overview A high

More information

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection

More information

Bonus ChapteR. Objective-C

Bonus ChapteR. Objective-C Bonus ChapteR Objective-C If you want to develop native ios applications, you must learn Objective-C. For many, this is an intimidating task with a steep learning curve. Objective-C mixes a wide range

More information

Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009

Software Engineering Concepts: Testing. Pointers & Dynamic Allocation. CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Software Engineering Concepts: Testing Simple Class Example continued Pointers & Dynamic Allocation CS 311 Data Structures and Algorithms Lecture Slides Monday, September 14, 2009 Glenn G. Chappell Department

More information