OC 知识复习 (三) 封装

20240202011830_image.png

如何处理异常

1).目的:为了让程序在执行的时候如果发生了异常而不崩溃 而是继续往下执行。
2).语法:
	@try {}
	@catch(NSException *ex) {}
	将有可能发生异常的代码放在@try中,当@try中的代码在执行的时候,如果发生了异常,
	不会崩溃,而是会立即跳转到@catch中去执行里面的代码
	
6. @catch的参数NSException *ex 通过%@打印出ex指向的对象的值,可以拿到发生异常的原因

7. @try...@catch后面还可以跟1个@finally 
	@finally中的代码,无论@try中是否发生了异常都会被执行,
	
8. @try..@catch 并不是万能的,不是所有的运行时错误都可以处理的.
	C语言的异常是无法处理的。
	在实际的开发过程中 使用@try用的相对比较少的,
	避免异常我们最常用的方式还是逻辑判断,
copy success

1.OC中的方法分为两种,

1).对象方法/实例方法:
	我们之前学习的方法 就叫做对象方法。如果想要调用对象方法就必须要先创建对象 通过对象名来调用。
	
2).类方法
	类方法的调用不依赖于对象,如果要调用类方法 不需要去创建对象,而是直接通过类名来调用。
copy success

2.声明.

1).对象方法的声明:
	对象方法声明使用 - 号
	- (返回值类型)方法名;
	- (void)sayHi;

2).类方法的声明:
	类方法声明使用 + 号
	+ (返回值类型)方法名;
	
	和对象方法的声明实现除了+和-其他的都是一样的
	
3.调用.
	1).对象方法:先创建对象 再通过对象名来调用,
	2).类方法:不需要通过对象名来调用 所以如果要调用类方法不需要创建对象而是直接使用类名来调用
	[类名 类方法名];

5.在类方法中不能直接访问属性
	
	1).属性是在对象创建的时候,跟随着对象一起创建在对象之中,
	2),类第1次被访问的时候,会做类加载,是把类的代码存储在代码段
	
	因为属性只有在对象创建的时候才会创建在对象之中,而类方法在执行的时候,有可能还没有对象。对象都没有 你访问个毛的属性。
	虽然不能直接访问属性,但是我们可以在类方法中创建1个对象 访问这个对象的属性,
copy success

  1. NSString是1个数据类型,用来保存0C字符串的,

  2. 其实NSString是Foundation框架中的1个类, 作用:存储OC字符串的,所以OC中的字符串本质上是用NSString对象来存储的

  3. 其实完整的标准的创建NSString对象的方式 NSString *str0 = [NSString new]; NSString *str1 =[NSString string]; 这种方式创建的字符串是空字符串 @""

    但是,NSString是我们最常用的1个对象 所以OC使用了1种更为简单的方式来创建字符串对象。直接使用@来表示1个OC字符串

    @"jack"这个其实本质上是1个NSString对象, NSString *str = @"jack"; @"jack”是1个NSString对象 str的值是这个对象的地址 %p 打印的是指针变量的值 %@ 打印的是指针变量指向的对象。

4.NSString最常用的类方法

1). + (instancetype)stringWithUTF8String:(const char *)nullTerminatedcstring;
instanceType 作为返回值 代表返回的是当前这个类的对象。
作用:将C语言的字符串转换为OC字符串对象

2). + (instancetype)stringWithFormat:(Nsstring *)format, ...
作用:拼接1个字符串对象,使用变量或者其他数据拼接成OC字符串,
copy success

5.最常用的对象方法

1),length方法 返回值为NSUInteger 
	  其实就是unsigned long得到字符串的字符的个数 可以处理中文,
		
2),得到字符串中指定下标的字符。
	(unichar)characterAtIndex:(NSUInteger)index;
	返回值是unichar 其实就是unsinged short 占据2个字节
	如果要输出unichar变量的值使用%C 这是大写的C

3),判断两个字符串的内容是否相同,
	
		a.判断两个字符串的内容是否相同 不要用==去判断因为这样有可能会出问题
		b.判断相等的方式、
			-(B00L)isEqualToString:(NsString *)astring;
		所以,判断两个字符串是否相等 应该使用这个方法区判断 才会得到正确的结果

4).比较字符串的大小
	-(NSComparisonResult)compare:(NSString *)string;
	完全可以使用int类接收结果,因为返回值是1个枚举,
	-1 小于 0 等于 1 大于
copy success