Top Banner
1 iOS Programming
35

1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Jan 04, 2016

Download

Documents

Sheila Hart
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

1

iOS Programming

Page 2: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Xcode操作環境基本介紹

Page 3: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Xcode開始對話窗 版本 5.11

建立新專案

Page 4: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

專案類型

基本專案類型

Page 5: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

專案屬性設定

目標裝置類型

Page 6: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Xcode主要工作區畫面1.點選專案基本設定

3.檢查目標裝置類型

4.可支援姿態設定

2.目標作業系統版本

5.執行

Page 7: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

專案導覽區

專案基本設定檔

Frameworks

畫面配置檔

App主要類別

ViewController對應類別

Page 8: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

畫面配置Stroyboard

主要編輯區

ViewController屬性設定區

工具區

Page 9: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

流程測試Seque起始 ViewController設定

Page 10: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Objective-C語言概論

Page 11: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Objective-C語言概論 變數及資料型態 條件與迴圈控制 輸出 NSLog

Objective-C類別的制定與使用– 類別宣告– 方法制定和使用

Page 12: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

BOOL◦ BOOL isBool = YES;

◦ NSLog(@"%d", isBool);

◦ NSLog(@"%@", isBool ? @"YES" : @"NO");

char◦ char aChar = 'a';

◦ unsigned char anUnsignedChar = 255;

◦ NSLog(@"The letter %c is ASCII number %hhd", aChar, aChar);

◦ NSLog(@"%hhu", anUnsignedChar);

short◦ short aShort = -32768;

◦ unsigned short anUnsignedShort = 65535;

◦ NSLog(@"%hd", aShort);

◦ NSLog(@"%hu", anUnsignedShort);

int◦ int anInt = -2147483648;

◦ unsigned int anUnsignedInt = 4294967295;

◦ NSLog(@"%d", anInt);

◦ NSLog(@"%u", anUnsignedInt);

long◦ long aLong = -9223372036854775808;

◦ unsigned long anUnsignedLong = 18446744073709551615;

◦ NSLog(@"%ld", aLong);

◦ NSLog(@"%lu", anUnsignedLong);

long long◦ long long aLongLong = -9223372036854775808;

◦ unsigned long long anUnsignedLongLong = 18446744073709551615;

◦ NSLog(@"%lld", aLongLong);

◦ NSLog(@"%llu", anUnsignedLongLong);

變數Integer Types

Page 13: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

float◦ float aFloat = -21.09f;◦ NSLog(@"%f", aFloat); ◦ NSLog(@"%8.2f", aFloat);

double◦ double aDouble = -21.09; ◦ NSLog(@"%8.2f", aDouble); ◦ NSLog(@"%e", aDouble);

long double◦ long double aLongDouble = -21.09e8L;◦ NSLog(@"%Lf", aLongDouble); ◦ NSLog(@"%Le", aLongDouble)

變數Floating-Point Types

Page 14: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Creating ◦ NSString *make = @"Porsche";◦ int year = 1968; ◦ NSString *message = [NSString stringWithFormat:@"That's a %@ %@ from %d!", make, model, year];

Enumerating◦ unichar letter = [make characterAtIndex:i];

Comparing ◦ NSString *car = @"Porsche Boxster"; ◦ if ([car isEqualToString:@"Porsche Boxster"]) { ◦ } ◦ if ([car hasPrefix:@"Porsche"]) { ◦ } ◦ if ([car hasSuffix:@"Carrera"]) { ◦ }

◦ NSString *otherCar = @"Ferrari"; ◦ NSComparisonResult result = [car compare:otherCar]; ◦ if (result == NSOrderedAscending) { ◦ } else if (result == NSOrderedSame) { ◦ } else if (result == NSOrderedDescending) ◦ }

變數NSString

Page 15: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Combining ◦ NSString *make = @"Ferrari"; ◦ NSString *model = @"458 Spider"; ◦ NSString *car = [make stringByAppendingString:model]; ◦ car = [make stringByAppendingFormat:@" %@", model];

Searching◦ NSString *car = @"Maserati GranCabrio"; ◦ NSRange searchResult = [car rangeOfString:@"Cabrio"]; ◦ if (searchResult.location == NSNotFound) { ◦ NSLog(@"Search string was not found"); ◦ } else { ◦ NSLog(@"'Cabrio' starts at index %lu and is %lu characters long", searchResult.location, searchResult.length); ◦ }

Subdividing ◦ NSString *car = @"Maserati GranTurismo"; ◦ NSLog(@"%@", [car substringToIndex:8]); ◦ NSLog(@"%@", [car substringFromIndex:9]); ◦ NSRange range = NSMakeRange(9, 4); ◦ NSLog(@"%@", [car substringWithRange:range]);

◦ NSString *models = @"Porsche,Ferrari,Maserati"; ◦ NSArray *modelsAsArray = [models componentsSeparatedByString:@","];◦ NSLog(@"%@", [modelsAsArray objectAtIndex:1]);

變數NSString

Page 16: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Replacing ◦ NSString *elise = @"Lotus Elise";◦ NSRange range = NSMakeRange(6, 5);◦ NSString *exige = [elise stringByReplacingCharactersInRange:range withString:@"Exige"];◦ NSString *evora = [exige stringByReplacingOccurrencesOfString:@“Exige” withString:@"Evora"];

Changing Case ◦ NSString *car = @"lotUs beSpoKE"; ◦ NSLog(@"%@", [car lowercaseString]); ◦ NSLog(@"%@", [car uppercaseString]); ◦ NSLog(@"%@", [car capitalizedString]);

Numerical Conversions◦ NSString *year = @"2012"; ◦ BOOL asBool = [year boolValue]; ◦ int asInt = [year intValue]; ◦ NSInteger asInteger = [year integerValue]; ◦ long long asLongLong = [year longLongValue]; ◦ float asFloat = [year floatValue]; ◦ double asDouble = [year doubleValue];

變數NSString

Page 17: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

The id Type◦ id mysteryObject = @"An NSString object"; ◦ NSLog(@"%@", [mysteryObject description]); ◦ mysteryObject = @{@"model": @"Ford", @"year": @1967}; ◦ NSLog(@"%@", [mysteryObject description]);

The SEL Type◦ SEL someMethod = @selector(sayHello);

NSInteger and NSUInteger

Objective-C Primitives

Page 18: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Creating ◦ NSArray *germanMakes = @[@"Mercedes-Benz", @"BMW", @"Porsche", @"Opel", @"Volkswagen", @"Audi"];◦ NSArray *ukMakes = [NSArray arrayWithObjects:@"Aston Martin", @"Lotus", @"Jaguar", @"Bentley", nil]; ◦ NSLog(@"First german make: %@", germanMakes[0]); ◦ NSLog(@"First U.K. make: %@", [ukMakes objectAtIndex:0]);

Enumerating ◦ for (NSString *item in germanMakes) { ◦ NSLog(@"%@", item); ◦ } ◦ for (int i=0; i<[germanMakes count]; i++) { ◦ NSLog(@"%d: %@", i, germanMakes[i]); ◦ }

Membership Checking◦ if ([germanMakes containsObject:@"BMW"]) { ◦ NSLog(@"BMW is a German auto maker"); ◦ } ◦ NSUInteger index = [germanMakes indexOfObject:@"BMW"]; ◦ if (index == NSNotFound) { ◦ NSLog(@"Well that's not quite right..."); ◦ } else { ◦ NSLog(@"BMW is a German auto maker and is at index %ld", index); ◦ }

陣列NSArray

Page 19: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Creating◦ NSMutableArray *brokenCars = [NSMutableArray arrayWithObjects: @"Audi A6", @"BMW Z3", @"Audi

Quattro", @"Audi TT", nil];

Adding and Removing Objects◦ [brokenCars addObject:@"BMW F25"]; ◦ [brokenCars removeLastObject]; ◦ [brokenCars insertObject:@"BMW F25" atIndex:0]; ◦ [brokenCars removeObjectAtIndex:0];◦ [brokenCars removeObject:@"Audi Quattro"];◦ [brokenCars replaceObjectAtIndex:1 withObject:@"Audi Q5"];

可變陣列NSMutableArray

Page 20: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Creating NSDictionary *inventory = @{ @"Mercedes-Benz SLK250" : [NSNumber numberWithInt:13], @"Mercedes-Benz E350" : [NSNumber numberWithInt:22], @"BMW M3 Coupe" : [NSNumber numberWithInt:19], @"BMW X6" : [NSNumber numberWithInt:16], };

inventory = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:13], @"Mercedes-Benz SLK250", [NSNumber numberWithInt:22], @"Mercedes-Benz E350", [NSNumber numberWithInt:19], @"BMW M3 Coupe", [NSNumber numberWithInt:16], @"BMW X6", nil];

NSArray *models = @[@"Mercedes-Benz SLK250", @"Mercedes-Benz E350", @"BMW M3 Coupe", @"BMW X6"];

NSArray *stock = @[[NSNumber numberWithInt:13], [NSNumber numberWithInt:22], [NSNumber numberWithInt:19], [NSNumber numberWithInt:16]];

inventory = [NSDictionary dictionaryWithObjects:stock forKeys:models]; NSLog(@"%@", inventory);

NSDictionary

Page 21: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Accessing Values and KeysNSLog(@"There are %@ X6's in stock", inventory[@"BMW X6"]);

NSLog(@"There are %@ E350's in stock", [inventory objectForKey:@"Mercedes-Benz E350"]);

NSArray *outOfStock = [inventory allKeysForObject: [NSNumber numberWithInt:0]];

NSLog(@"The following cars are currently out of stock: %@", [outOfStock componentsJoinedByString:@", "]);

NSDictionary

Page 22: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

Creating NSMutableDictionary *jobs = [NSMutableDictionary dictionaryWithDictionary:@{ @"Audi TT" : @"John", @"Audi Quattro (Black)" : @"Mary", @"Audi Quattro (Silver)" : @"Bill", @"Audi A7" : @"Bill" }];

Adding and Removing Entries[jobs setObject:@"Mary" forKey:@"Audi TT"]; [jobs removeObjectForKey:@"Audi A7"]; jobs[@"Audi R8 GT"] = @"Jack";

Combining DictionariesNSDictionary *bakerStreetJobs = @{ @"BMW 640i" : @"Dick", @"BMW X5" : @"Brad" }; [jobs addEntriesFromDictionary:bakerStreetJobs];

NSMutableDictionary

Page 23: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

條件與迴圈控制 條件控制語法和C語言相同:

if(condition){…} if(condition){…}else{…} switch(condition){…}

三種迴圈形式與C語言相同: for(…;…;…){…} while(condition){…} do{…} while(condition);

Page 24: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

輸出 NSLog 雖然仍可以使用 printf但在 Objective-C中建議使用 NSLog, 語法與 printf類似,但字串前需加上@用以代表是 NSString型態。◦ printf("Hello World %d",x);◦ NSLog(@"Hello World %d",x);

Page 25: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

#import 在 Objective-C中建議使用#import取代#include,#import具有修正重複引入的功能。

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

Page 26: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

建立類別

類別的制定與宣告

選擇 Objective-C Class

Page 27: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

類別名稱

父類別

類別的制定與宣告

Page 28: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

類別制定範例#import <Foundation/Foundation.h>@interface MyObject : NSObject{ int a,b,c; NSString *str;}-(void)sayHello;@end

@implementation MyObject-(void)sayHello{ NSLog(@"Hello");}@end

MyObject *obj = [[MyObject alloc] init]; [obj sayHello];

宣告

實作

建構和使用

Page 29: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

事件控制範例

Page 30: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

事件控制範例

Page 31: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

一個 Objective-C類別的製定

@interface MyObject : NSObject @end

MyObject.h

@implementation MyObject@end MyObject.m

其中 .h檔用來宣告類別的成員變數和方法, .m檔則為方法的實作。

Page 32: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

加上成員變數的範例@interface MyObject : NSObject{ int i; NSString *str;}@end

Page 33: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

加上方法宣告和實作-(void)setUserName:(NSString*)name withAge:(int)age andGender:(NSString*)gender;

-(void)setUserName:(NSString*)name withAge:(int)age andGender:(NSString*)gender{ NSLog(@"Name:%@,Age:%d,Gender:%@",name,age,gender);}

MyObject *obj = [[MyObject alloc] init];[obj setUserName:@"John" withAge:30 andGender:@"M"];

宣告

實作

使用

Page 34: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

標準物件建構方式MyObject *myObj= [[MyObject alloc] init]; -(id)init{ self = [super init]; return self;}

-(void)dealloc{ [super dealloc];}

Page 35: 1 iOS Programming. Xcode 操作環境基本介紹 Xcode 開始對話窗 版本 5.11 建立新專案.

@property @property可用來產生變數的 Getter和 Setter方法 如果@property 名稱和成員變數相同,在類別中的@property變數會自動轉成 _變數名稱

除非加上@synthesize指令

@interface MyObject : NSObject{NSString *str;} @property (strong,nonatomic) NSString *str;@end

@synthesize str=_str;