1 对象作为方法的返回值.
1)对象可以作为方法的返回值的.
2 一个target中的类无法直接在另外一个target里使用
3对象作为类的属性.
属性的本质是变量:在创建对象时,对象按照模板挨个创建.
如果对象的属性是另外一个类的对象时,这个属性仅是个指针
并没有对象产生,必须为这个属性赋值一个对象的地址才能使用.
4 A类可以作为B类的属性,代表B拥有A,
HMPerson *p1 = [HMPerson new];
p1->_dog = [HMDog new];
p1->_dog->_qq = [QUANQUAN new];
在main函数里必须为dog和qq创建对象,才能引用他们各自的属性.也才能赋值.
&&异常处理
1 错误
1)源代码有语法错误
2)解决方案:将错误的代码修改为符合规范的
2 BUG
1) 指的是,可以编译连接,执行,只不过执行出来的结果并不是我们预想的结果.
2)解决方案:99%都是因为变量的值没有按照我们所预想的那样变化,通过断点测试,去监视变量的值是如何变化的,分析为什么会乱变化.
3 异常
1)概念 :指的是,程序可以编译,连接执行.
当程序在运行的时候,程序处于某种特殊情况下 的时候就会报错.
特点:异常不是一定发生,而是当程序运行时处于某种特殊情况才发生.
2)后果:程序立即终止运行.后面代码不会运行.
闪退的原因:
a 程序锁占用的空间太大.
b 程序发生异常.
4 如何避免异常.
1)处理的目的:希望程序在执行的时候,如果发生异常,程序不要崩溃,而是往下执行代码.
2) 使用@try....@catch处理异常.
3)将有可能发生异常的代码用@try围起来
@try
{
在执行的时候可能发生异常的代码;
}
@catch(NSException *ex)
{
}
4)实行步骤:
a. 如果@try中的代码在执行的时候,发生了异常. 这个时候程序不会崩溃.
而是会立即跳转到@catch中执行代码. @catch中的代码执行完毕之后,再继续往下执行.
如果@try中的代码在执行的时候,没有发生异常,这个时候就会跳过@catch 往下执行.
5).作用: 让代码在执行的时候如果发生了异常 而不崩溃.
5. 使用注意
1). 在@try中的代码执行的时候,如果发生了异常.
会将发生异常的信息.封装为1个 NSException 对象
把这个对象的地址.赋值给@catch的参数.然后再执行@catch的代码.
所以,@catch的参数指向了错误对象.
在@catch中如果想要拿到发生异常的原因.就可以访问这个参数对象.
2). @catch中的代码只有在发生异常的时候,才会执行.
所以.@catch中一般我们写处理异常的代码.
3). @catch后面还可以跟1个@finally代码块.
无论@try中是否有异常发生.@finally中的代码都会被执行 .
4). @try..@catch并不是万能的 不是所有的异常都可以处理.C语言的异常处理不了. 只能处理OC的异常.
5). @try..@catch在我们的代码中很少使用.
我们一般情况下都是 通过逻辑判断来减少异常的发生. |
|