iOS开发基础

整理和查找了一下以前学习时候的资料


OC数据类型
1.数据类型
  • 数据类型       : 基本数据类型、指针数据类型
  • 基本数据类型: 整值型、字符型(char)、布尔型、空类型(void)
  • 指针数控类型:类(class)、double
2.c和oc的基本数据类型
  • int:声明整型变量
  • double:声明双精度变量
  • float:声明浮点型变量
  • char:声明字符型变量
  • id: 通用的指针类型
  • enum:声明枚举类型
  • long:声明长整型变量或函数
  • short:声明短整型变量或函数
  • signed:声明有符号类型变量
  • struct:声明结构体变量
  • void:声明函数无返回值
3.数据类型格式化说明符
数据类型 OC关键字 格式说明引导符
整型 int %d.%i
短整型 short int %hd.%hi
长类型 long int %ld.%li
无符号短整型 unsigned int %u
短整型 unsigned short %hu
无符号长整型 unsigned long %lu
浮点型 float %f
双精度型 double %f
长双精度型 long double %lf
字符型 char %c
4.具体的数据整型

整数类型
oc中整数类型用int来表示,格式化符号用%i或%d来表示
比如:int a=100;
oc语言的整型常量默认为int型,声明long型常量可以后加“l”或“L”,如:

int b=600;//long c=888888888L;


类型 占用存储空间 值域范围
Byte 1个字节 -128—127
short 2个字节 -2′15—2′15-1
int 4个字节 -2′31—2′31-1
long 8个字节 -2′63—2′63-1

注释:2‘63为2的63次方



浮点类型

浮点类型的变量可以存储包括小数的值
oc中有两种浮点类型
·float 有效数字为6-7位 格式化说明符号用%f表示
·double 有效数字为15-16位 格式化说明符号用%f.%e或%g表示
oc中浮点型常量默认为double型,如果要声明一个常量为float,在数字的后面加f或F

例如:double m=3.14159;//正确 float f=3.14f;

类型 占用存储空间 值域范围
float 4字节 -3.403E38
double 8字节 -1.798E308—1.798E




字符串char
char型数据用来表示通常意义上的“字符”,格式化说明符用%c表示
字符常量为用单引号括起来的单个字符,
例如:char achar='a';char b='0';char cChar='苹';值域范围:-128—127
"\n"、oc编译器把这个当做单个字符
unsigned char 值域范围:0~255
oc字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示,
例如:char c1='\u0061';

注:Unicode是全球语言统一编码




逻辑型Boolean(布尔型)

Boolean类型指的是用于存储真值和假值的变量,一般用于程序流程控制。
Boolean类型数据允许取值true或false,也可以是0或非0的整数代替true和false,这点和java语言不同。
实例:

Boolean flag=true
if(flag){
   NSLog(@"hello iphone");
}




限定词
·long int:声明变量XX为long的整型变量,格式化符号为¥%li,如:long int a;
·long long int:声明变量XX为long long的整型变量,格式符号位%lli,如:long long int b;
·long double:跟int基本相同;
·unsigned int:声明无符号的整型变量,如:unsigned int c;
·signed int:声明有符号的整型变量。如:signed int d。




void类型(空类型)

告诉编译器没有任何范围类型的值
不能像其他数据类型一样来声明变量
例如:void i=10;//错误
void通常与方法一起搭配使用,比如:

-(void)test{
   //code
}




id类型

id类型是oc中独有的数据类型,它可以存储任何类型的对象,从某种意义上说,它就是一般的对象类型。
·将number声明为id类型的变量,
如: id number;
·格式化说明符:%p

OC 类

是具有相同特征和行为的事物的抽象
万事万物皆对象

对象是类的实例
类是对象的类型

面向对象的特点分为:

  • 封装
  • 继承
  • 多态


字符串

知识点
1.NSString
2.NSMutableString

了解:

1.什么是字符编码

是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉 冲)进行配对。即在符号集合与数字系统之间建立对应关系。

字符编码百科:http://baike.baidu.com/link?url=bFKEidJQmo3JEljFQRbtkEyToRe1_SrqbCgNsv4jKcYGFyTBixJjhTVYegSiozPVpvrR99cQhUoQq_01BnF1L_

2..UTF8编码

UTF8编码:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

========= 不可变字符串(NSString) =========

(1).为什么需要NSString对象

答:在OC中创建字符串时,一般不使用C的方法,
因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,
在Cocoa中NSString集成的一些方法,可以很方便的操作字符串。

(2).OC中定义字符串和C语言定义字符串

    //C字符串常量

    char *cString = "c字符串";

    printf("c string is %s\n",cString);

    //OC字符串常量

    NSString *ocString = @"oc字符串";

    NSLog(@"oc string is %@",ocString);

(3).NSLog如何格式化NSString对象

  %@

(4).字符串创建

   <1>定义一个空的不可变字符串(一般用不到):

    NSString *string = [[NSString alloc] init];

  <2>定义一个有值的字符串(一般用不到)

    [NSString stringWithString:@"test"];

    [[NSString alloc] initWithString:<#(NSString *)#>];

(5).如何格式化一个字符串

 [NSString stringWithFormat:<#(NSString *), ...#>];

(6).C语言字符串和NSString的转换

 <1>c字符串转化为NSString

  [NSString stringWithUTF8String:c];

 <2>NSString转化为C

 [string UTF8String];

(7).如何从文本文件中读取字符串

 //第1种:

 /*
     stringWithContentsOfFile:要读取文件路径

     encoding:编码方式

     error:错误信息,可以传nil

     */

//类方法

    s = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

//对象方法

    [[NSString alloc] initWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];

 第2种:

//把路径的字符串转化为NSURL对象

  NSURL *filePath = [NSURL fileURLWithPath:path];

    string = [NSString stringWithContentsOfURL:filePath encoding:NSUTF8StringEncoding error:nil];

(8).如何把一个字符串写入到文件中

   /*

     writeToFile:要写入的文件路径(file path)

     atomically:YES表示原子性,NO表示非原子性。一般是YES(比较安全),当为YES,系统在写入的过程中会创建一个临时文件,系统先把数据写入到临时文件里面,如果写入成功,最后赋值到目标文件里面。

     encoding:编码,一般是UTF8(NSUTF8StringEncoding)

     */

    NSError *error;

    //文件不存在会自动创建

    [string writeToFile:path atomically:YESencoding:NSUTF8StringEncoding error:&error];

(9).如何从网络上读取字符串

NSURL *url = [NSURL URLWithString:远程地址];

    string = [NSString stringWithContentsOfURL: url encoding:NSUTF8StringEncoding error:nil];

(10).求字符串长度(一个中文长度为1)

 [string length]

(11).通过索引获取相应的字符

 [string characterAtIndex:0]

(12).字符串判断

  1)判断两个字符串内容是否相同

    [s1 isEqualToString:s2]

  2)判断两个字符串是否是同一个对象

    if (s1 == s2){

        NSLog(@"s1和s2是同一个对象");

    }else{

        NSLog(@"s1和s2不是同一个对象");

    }

(13).字符串比较

    1)两个字符串比较(区分大小写)

    NSComparisonResult result = [s1 compare:s2];

    if (result == NSOrderedAscending) {

        NSLog(@"s2 > s1");

    } else if (result == NSOrderedSame){

        NSLog(@"s1 = s2");

    }else{

        NSLog(@"s2 < s1");

    }

    2)比较两个字符串(忽略大小写)

      //忽略大小写

    result = [s1 caseInsensitiveCompare:s2];

(14).转化为基本类型(int,float,bool,double,integer)

   //转化为int

    [num2 intValue];

    //转化为NSInteger

    [num2 integerValue];

    //转化为Double

    [num2 doubleValue];

    //float

    [num2 floatValue];

    //long long

    [num2 longLongValue];

    //bool

    [num2 boolValue];

(15).把一个字符串转化为大写,小写,各个单词的首字母大写

   //转化为大写

    NSString *upperString = [s1 uppercaseString];

    NSLog(@"大写:%@",upperString);

    //转化为小写

    NSString *lowString = [s1  lowercaseString];

    NSLog(@"小写:%@",lowString);

    //各个单词的首字母大写

    NSString *ss = [s1 capitalizedString];

    NSLog(@"各个单词的首字母大写:%@",ss);

(16). 替换字符串

    [S stringByReplacingOccurrencesOfString:A  withString:B];//把S中所有的A换为B

   [string stringByReplacingOccurrencesOfString:@"l3l" withString:@"s"];

(17).分割一个字符串,转化为数组

  [string componentsSeparatedByString:@“分隔符”];

(18).字符串截取

     //从指定索引截取到最后

    NSString *subString = [string substringFromIndex:起始索引];

   //从开始截取到指定的索引之前

    subString = [string substringToIndex:终止索引(不包括当前索引)]’

    //截取字符串的一部分

    //范围

    NSRange range = NSMakeRange(2, 3);

   [string substringWithRange:range];

(19).字符串拼接

  (1)拼接一个字符串

    [str1 stringByAppendingString:str2]

  (2)拼接一个格式化字符串

   [str1 stringByAppendingFormat:@" %@",str2]

(20).查找字符串

    //[string rangeOfString:要查找的字符串]

    //只会查找第一次出现的字符串,从前向后查找

    range = [string rangeOfString:@"test"];

    NSLog(@"%ld - %ld",range.location,range.length);

    /*

     NSCaseInsensitiveSearch 不区分大小写

     NSLiteralSearch 区分大小写

     NSBackwardsSearch 从后向前查找

     */

    range = [string rangeOfString:@"test" options:NSBackwardsSearch];

    NSLog(@"%ld - %ld",range.location,range.length);

(21).判断一个字符串是否以某个前缀或者后缀

  //判断是否以某个字符串前缀开头

    [string hasPrefix:@"he22"]

  //判断是否以某个字符串前缀结尾

    [string hasSuffix:@"ds"];

(22).路径

 1)路径后面追加一个文件名或者路径(网络会用到)

   [path stringByAppendingPathComponent:文件名或者文件夹名字];

 2)把指定的字符串数组拼接成路径

  NSMutableArray *array = [NSMutableArrayarrayWithObjects:@"Users",@"qianfeng",@"desktop",@"新建文件夹", nil];

    newPath = [NSString pathWithComponents:array];

 3)将路径分割成字符串数组

  NSArray *components = [path pathComponents];

 4)判断是否是绝对路径

    BOOL isAbsolutePath = [path isAbsolutePath];

 5)获取最后一个目录或者文件名

   //取路径的最后一部分

    NSString *s = [path lastPathComponent];

 6)删除路径最后一部分

   [path stringByDeletingLastPathComponent];

 7)获取文件后缀

 [path pathExtension] 

 8)删除后缀

 [path stringByDeletingPathExtension];

 9)添加后缀

  [path stringByAppendingPathExtension:@"png"];

.

========= 可变字符串(NSMutableString)一般用不到 =========

(1).初始化可变字符串(必须初始化)

NSMutableString *string = [[NSMutableString alloc] init];

string = [NSMutableString string];

(2).初始化带有字符串的可变字符串

 [NSMutableString stringWithString:@"sss"];

(3).设置字符串

 //设置字符串(会覆盖原来字符串内容)

  [string setString:@"测试"];

(4).在指定的位置插入字符串

  [string insertString:@“要插入的字符串” atIndex:插入字符串的下标];

(5).追加一个部分字符串(在最后追加)

[string appendString:@"🐷"];

    //追加格式化字符串

[string appendFormat:@"dog=%@ cat=%@",@"🐶",@"🐱"];

(6).删除字符串一部分

   //要删除的范围

    NSRange deleteRange = NSMakeRange(3, 2);

    //删除指定范围的字符

    [string deleteCharactersInRange:deleteRange];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343