IOS学习笔记_ios学习笔记

2020-02-28 其他范文 下载本文

IOS学习笔记由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“ios学习笔记”。

Objective c学习

1.特殊的空类型 nil,该类型没有名称,空引用(nil)是空类型变量唯一的值,该类型可

以转换为任何引用类型

2.Ios系统中short int 2字节,int 4字节,long int 4字节,longlong 8字节

3.NSLog输出各种类型的字符,支持附加字符

L 输出为长类型的数

M 指定输出数据所占的最小宽度

.n表示输出n位小数

-表示输出的数值左边对齐

4.NSString在双引号前使用@符号,区分c语言的字符串

5.枚举类型自定义 enum{male,female} me you;

6.BOOL类型返回值为YES或者NO

7.OC中并没有提供方法或者属性来访问数组的长度,只有通过sizeof()函数来计算数组的长度:sizeof(数组变量)/sizeof(数组变量[0])

8.自动内存管理的代码要放在 @autoreleasepool{}中

9.预处理 宏定义 #define #undef带参数的宏定义 #define 宏名称(参数列表)字符串

10.条件编译 #ifdef、#ifndef、#else、#endif 或者 #if、#elif、#else、#endif

11.#import可以帮助程序员判断是否有重复导入的情况

12.结构体 struct不允许直接赋值,使用typedef修改结构体名称时允许直接初始化

13.Objective c提供了@private @package @protected和@public等访问控制符来实现封装

14.定义接口部分的语法

@interface MyCla :NSObject

{

Int _count;

Id _data;

NSString* _name;

}

-(id)initWithString:(NSString*)aName;

+(MyCla*)createMyClaWithString:(NSString*)aName;

@end

15.从xcode4开始,objective c建议成员变量以下划线开头

16.方法类型标识:+代表该方法是类方法(就是指静态方法),直接用类名调用即可;—代

表该方法是实例方法,必须用对象才能调用

17.方法声明的语法:

—(void)insertObject:(id)anObject atIndex:(NSUInteger)index

18.只在实现部分(.m文件中)定义的变量或方法只能在实现部分使用,称为被隐藏的成员变

量或方法,无法从外面访问他们。

19.定义类的变量的方法 类名* 变量名

20.创建对象的方法 [[类名 alloc] 初始化方法]

21.可以使用java的new关键字来创建对象 [类名 new]

22.Self关键字的作用:1类内部的方法互相调用 2类似于java的this关键字 3返回当前的类

23.Id类型可以代表所有对象的类型,任意类的对象都可以赋值给id类型的变量

24.形参个数可变的方法,在最后一个形参后增加逗号和三点(,...)

25.为了在程序中获取个数可变的形参,需要使用关键字,va_list、va_start、va_end、var_arg

26.Objective c里支持访问控制,需要添加@public @package @protected @private 关键字

27.Objective c里不支持静态变量 static关键字不能用于修饰成员变量,static修饰的全局

变量只能在当前原文件中访问,为了模拟静态变量,可以再类实现部分定义一个static修饰的全局变量,并提供一个静态方法来暴露该全局变量

28.成员变量的封装使用setter和getter方法,分别为getAbc和Abc

29.在objective c 2.0开始可以自动合成setter和getter方法,需要在类的接口部分添加

@property指令,在类的实现部分添加@synthesize指令

30.Atomic指定合成的存取方法是否为原子操作,当一个线程进入存、取方法的方法体后,其他线程无法进入存取方法,这样就可以避免多线程并发破坏对象的数据完整性。

31.Copy指示符的使用 @property(nonatomic,copy)NSString* name;当被调用时只是复制

了一个副本

32.Getter和setter方法可以为getter方法和setter方法指定自定义方法名:@property(aign,nonatomic,getter=wawa,setter=nana)int price;

33.Readonly指令指示系统只合成getter方法,不合成setter方法,readwrite指令指示系统

需要合成getter方法和setter方法,是系统的默认设置

34.Retain指示系统在定义属性时,该属性原来所引用的对象的引用计数减1,被赋值对象的引用计数加1.ARC机制类似于java的垃圾回收机制,全称为autoreleasepool

35.Objective c支持点语法的访问,前提是该对象包含setter方法

36.KVC(key value coding)允许以字符串的形式间接地操作对象的属性

37.KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则

对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

38.Objective c中没有构造方法,对象的初始化有对应的init方法,可以在类中重写init方

法也可以自定义任意名称的初始化方法。

39.Objective c中没有多继承的概念

40.Super关键字与java中使用方法类似,可以直接在子类中调用父类被覆盖的实例方法

41.子类接口不允许定义与父类接口部分重名的成员变量,不论父类的成员变量是否是私

有;而在实现部分没有限制

42.在objective c中没有接口类和抽象类的概念

43.Objective c的包装类是为了让c语言的基本类型具有面向对象的特征

44.NSInteger、NSUInteger、CGFLoat并不是包装类

45.NSValue和NSNumber都是包装类,一般用NSNumber较多,包含3类方法:

+numberWithXXX、-initWithXXX、-XXXValue,用这些方法可以将基本类型转换为包装类

46.Description 方法是NSObject类的方法,可以描述当前的类

47.==与isEqual的区别:本质上没有区别,但isEqual方法是NSObject类的实例方法可以

被重写,可以提供自定义的相等标准。与java不同的地方是,objective c中另外有一套isEqualToString方法来判断两个字符串是否相等

48.Objective c中没有提供抽象类的语法支持,但可以用类簇(cluster)来进行模拟

49.类别(category)objective c 允许使用类别为现有的类添加新方法,并且不需要创建子

类,不需要访问原有类的源代码。定义类别时必须使用圆括号来包含类别名类别中通常只定义方法。一般习惯将类别的接口文件定义成“类名+类别名.h”的形式。类别也可以重写原有类的方法,但通常不建议这么做。可以使用子类来重写。

50.可以使用类别来对类进行模块化设计,目的是解决一个类特别大时将不同的实现方法放

在不同的类中。

51.扩展(extension)与类别相似,扩展相当于匿名类别。

52.协议是objective c里的重要知识点,作用类似于接口,用于定义多个类应该遵守的规范,可以使用类别实现非正式协议;也可以直接定义正式的协议,正式的协议不再使用@interface、@implementation关键字而是使用@protocol关键字。Objective c协议的功能基本等同于接口,而接口的实现也等同于遵守协议,遵守协议也可以说成是实现协议。

53.定义的协议可以把协议定义的方法委托给实现协议的类,这样可以让类定义具有更好的通用性,在ios开发中大量依托于委托的概念。

54.使用@try„„@catch„„@finally捕获异常

55.Objective c 也提供了类似java的反射机制,并提供了3中编程方式与运行环境交互:

1.直接通过objective-c的源代码。2通过NSObject类中定义的方法进行动态编程。3.直接调用运行时函数进行动态编程。

56.Ios的内存回收机制有3中:1.手动引用计数和自动释放池 2.自动引用计数 3.自动垃圾

回收。目前只支持前两种回收。Ios4.2之前的只能使用第一种。

57.Xcode5中默认启用了自动引用计数(ARC),因此不必再担心内存管理

58.NSString字符串类,包含字符串的一些通用的方法。

59.NSMutableString是可变字符串,其中NSString类似于java中的String,而

NSMutableString就类似于java中的StringBuilder类

60.日期与时间类NSDate,NSDate输出时可以输出不同语言的格式,需要使用NSLocale

来设置,NSLocale代表一个语言、国际环境

61.日期格式器(NSDateFormatter),作用是完成NSDate与NSString之间的转换

62.日历(NSCalendar)与日期组件(NSDateComponents)类似于java中的Calendar类,可以从日期中分别提取到年、月、日、时、分、秒

63.定时器(NSTimer)

64.对象复制(copy与mutableCopy方法),copy用于返回对象的不可修改的副本,mutableCopy返回对象的可变副本。对副本进行修改不影响原来的对象。

65.NSCopying与NSMutableCopy协议

66.浅复制(shallow copy)与深复制(deep copy)

67.Setter方法可以使用copy指示符,将传入参数的副本赋给程序的实例变量

68.Objective-c的集合,NSArray代表有序、可重复的集合;NSSet代表无序、不可重复的集合;NSDictionary代表具有映射关系的集合,集合里只能保存对象,相当于java中的map集合69.访问NSArray时使用objectAtIndex:index来访问,但在ios5.0以上的系统可以使用下

标来访问,例如array[i],与java中的访问方式相同。

70.Objective-c也支持java中foreach访问,成为快速枚举(for....in)

71.NSMutableArray是NSArray的子类,代表集合元素的可变的集合,增加了一些方法:

add、remove、replace、sort

72.NSArray允许对集合中的所有元素进行整体的KVC编码,有两个方法:setValue:froKey、valueForKey

73.NSArray还对集合中所有元素或部分元素进行KVO编程提供了方法:addObserver:

forKeyPaht:options:context:、removeObserver:forKeyPath:、addObserver:toObjectsAtIndexes:forKeyPath:options:context:、removeObserver:fromObjectsAtIndexes:forKeyPath:

74.NSSet是一个广泛使用的集合,NSSet按Hash算法来存储集合中的元素,具有很好的存取和查找性能。NSSet不允许包含相同的元素,如果把两个相同的元素放在同一个NSSet集合中,则只会保留一个元素。

75.NSMutableSet继承了NSSet,代表了一个集合元素可变的NSSet集合,主要是在NSSet的基础上增加了添加元素、删除元素的方法,并增加了对集合计算交集、并集、差集的方法:addObject、removeObject、removeAllObjects、addObjectsFromArray、unionSet、minusSet、intersectSet、setSet

76.NSCountedSet是NSMutableSet的子类,它为每个元素额外维护一个添加次数的状态。

77.有序集合(NSOrderedSet与NSMutableOrderedSet)既有NSSet集合的特性又包含

NSArray类似的功能。

78.NSDictionary类似于java中的map集合,提供了类方法和实例方法来创建,传入参数

基本一致,类方法以dictionary开始,实例方法以init开头

79.谓词(NSPredicate)用来定义一个逻辑条件,通过该条件可执行搜索或内存中的过滤

操作,可以在集合中使用谓词对集合进行过滤。包含三个子类:NSComparisonPredicate、NSCompoundPredicate和NSExpreion

80.谓词中可以使用占位符参数,类似于数据库中的存储过程。

81.文件管理使用NSFileManager类进行文件的创建、删除、移动和复制。要读取文件的内容需要通过NSFileHandle进行处理;如果要读取网络资源可以通过NSURL进行处理;如只是读取项目内部的资源,许使用NSBundle进行处理。

82.数据缓冲区(NSData和NSMutableData),NSData所包含的方法:bytes、getBytes:

length、getBytes:range、subdataWithRange、writeToFile:atomically、writeToURL:atomically

83.NSFileManager可以访问文件的属性和内容,也可以创建、删除、复制和移动文件,查看目录包含的内容,与java中的文件不同的地方时可以操作url的文件。

84.使用NSPathUtilities.h管理路径,包含了对NSString类的扩展,增加了一些专门用于操

作路径的方法

85.另外NSPathUtiliters还提供了一些常用函数来获取系统的相关属性:NSUserName()、NSFullUserName()、NSHomeDirectory()、NSHomeDirectoryForUser(user)、NSTemporaryDirectory()

86.可以使用ProceInfo获取进行信息

87.使用NSFileHandle处理文件IO

88.使用NSURL访问网络资源,可以通过该类对URL地址进行解析,获取scheme、host、port、path等

89.NSBundle可以处理包含在项目中的资源文件

90.对象归档类似于java语言的序列化操作,就是用某种格式把一个或多个对象保存到指

定文件中,方便以后从文件中恢复他们。使用两个雷(NSKeyedArchiver和

NSKeyedUnarchiver)

91.如果程序要归档、恢复任意自定义类的实例,那么该类应该实现NSCoding协议

92.可以使用NSData完成自定义归档,一次性的收集多个对象,并将这些对象归档到当个

档案文件中。

93.可以使用归档完成对象的深复制。

《IOS学习笔记.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
IOS学习笔记
点击下载文档
相关专题 ios学习笔记 学习笔记 iOS ios学习笔记 学习笔记 iOS
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文