1. 懒加载的时候 不要创建一个对象然后对指针赋值
因为创建的对象如果没有被控制器强引用的情况下 就会被释放
所以自己的指针指的位置还是空 然后指针也被回收掉 相当于没有什么用
2. 当带有参数id请求的时候 一定要记得当数组中的数据不为0 的时候,获取第一个,或者最后一个的id 。
3. 用SB的时候 拖动的每个控件都可以规定是什么类 相对应的类,可以对相对应的类进行拖线管理,并在类中设置特有的属性
SB可以创建对个
SB上面的东西 并不一定是相对应的图片 只是包含控件上所有子控件的类型
也就是说SB就是故事版 起到了结构换的作用
无论什么时候 SB和XIB都只能做没有变化的界面 当界面的内容不确定的时候不能用
对于SB来说 当遇到不能满足我们需求的时候 会比较麻烦
4. SB或者XIB中拖的控件 当加载的时候调用的是awakeFromNib
而不会调用initwithframe 而且这个方法调用在drawract之前
5. autoresizeMask 可以设置view的适配 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth这事适配宽和高
6. 请求方法必须一个个的写出来 因为每个请求的请求参数和网址不一样,后续做的操作也是不一样的。
7. 表格的的分组创建用代码的话是在init方法中创建的,创建分组的话,组合组之间会分开,不创建分组的话不会分开的。无论是什么样的style都是可以创建组头的。分组的时候各分组之间有空隙,但是向上拉的时候 不会停留,不分组的话虽然组合组之间没有空隙,但是当每一分组到达屏幕的最上方时,组头会停留在最上方。
一. 播放音乐分为本地音乐和网络音乐
对于本地音乐分为音乐(长音乐)音效(短音乐,几秒)
1.音效播放
播放音效的时候要用到AVFoundation.framework,但是看视频的时候没有成功。 也许是AudioToolBox.framework正在验证
首先要获得播放文件的路径url[[NSBundle mainBundle] URLForResource:(example.mp3)withExtension:nil]
然后获得音效文件对应的ID ,加载音效文件
staticSystemSoundID soundID = 0
audioServersCreatSystemSoundID((__bridgeCFURLRef)(url),&soundID) //这个传递的是地址 方法肯定把id改变了,所以不需要参数来接受
最后播放音效
AudioServicesPlaySystemSound(soundID);普通播放
AudioServicesPlayAlertSound这个方法是带震动的播放
释放文件
AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
2. 音乐播放
音乐播放的时候需要用到的类是AVAudioPlayer(音乐播放器)
播放的时候首先要获得文件的路径
然后加载文件在player初始化方法中
在init的方法中有
- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;
- (id)initWithData:(NSData *)data error:(NSError **)outError
这个类中有很多方法,准备播放prepareToPlay,播放play,暂停pause,停止stop都有
属性有音乐的时常,是否正在播放,当前播放的位置,
播放次数numberOfLoop -1 代表无限循环 其他的是在基础上加1
还有音量volume
是否更改速率enableRate 速率rate 默认是不可以更改的 想更改的话可以单独设置
需要注意的是每一个播放器只能对应一个文件
二。SB中屏幕跳转分为直接跳转和条件跳转
直接跳转是在SB中对控件直接拉跳转
条件跳右键控制器在segue选项中拖线到对应的控制器,同时选择跳转的方式。
modal的跳转没有导航栏,所以需要自己设置推出控制器的点击按钮。当然待在导航栏设置的东西也都是没有用的。
屏幕的条件跳转通过segue来区别的,不同的segue对应不同的跳转路线。每一个segue必须对应的ID。通过不同的ID来区分跳转的方向。
在用SB中,我们要注意的是,当需要条件跳转的时候要调用,
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender方法,其中identifier是SB中segue的ID,而sender是传递的参数。
调用这个方法的时候,会通过
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法去传递参数,
segue有sourceViewController和destinationViewController两个属性,分别是segue两边的控制器,通过这两个属性可以判断跳转的是否正确。。sender就是上面传递的参数。在这个方法里可以对参数进行处理和赋值。
这里需要注意的是,不可以在set方法里经行属性赋值,因为这个时候,目的控制器的view还没有被创建出来,所以在set方法里对属性进行修改是没有效果的。当然也可以取消view的懒加载,当然这不建议。
三。导航栏按钮的拖线
当导航栏按钮是自己定义的button而不是uibarbuttonitem的时候,拖线的时候要注意,要对button经行拖线,而不要对拖成uibarbuttonitem。不然是没有效果的。