IOS 小技巧积累(持续更新)
来源:互联网 发布:列宁格勒号驱逐舰数据 编辑:程序博客网 时间:2024/06/05 02:24
1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。
直接调用成员变量并且给其赋值:member=[NSString stringWithFormat:@””];将不执行setmember 方法。
使用self调用成员变量并且给其赋值:self.member=[NSString stringWithFormat:@””];将执行setmember方法。
2.延时函数: [NSThread sleepForTimeInterval:3];
[self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0];
3.实现随机数:srandom(time(NULL));
4. #pragma mark -
#pragma mark Initialization
它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开;
注意
#pragma mark – 的“-”后面不能有空格。
如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort listalphabetically”即可。
5. 我们通过发送消息给对象出发特定动作;对象发送某些变化的时候通过回调函数(callback)通知我们。对象在特定事件发生的时候,就会调用对应的回调函数,触发业务逻辑。
回调函数通过所谓的代理(Delegation)来实现.
delegate使用方法:
@property (assign) <id>xxxDelegate delegate;
正确的使用方法是使用assign属性而不是retain。
之所以对于delegate这类对象使用assign而不是用retain是为了防止循环retain(retain loop)。
具体原因请移至:http://www.cnblogs.com/kimimaro/archive/2011/09/05/2167576.html
6. 编程习惯:定义Bool类型值时,@property(nonatomic,getter=isSoundOn) BOOL soundOn;
7.手动创建内存自动释放池:
NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc]init];
// TODO
// 向对象发送一条autorelese消息时,就将该对象加入到自己手动创建的内存释放池中。在此方法结束时调用[pool release],将释放添加到该内存池的所有对象.
[pool release];
// 如若在自动释放池pool 调用release方法之后,某对象的retainCount不为0,该对象将继续保持可用。
8.任何基本数据类型(包括char数据类型),可以通过使用NSNumber类根据这些数据类型来创建对象。
NSNumber *myNumber, *floatNubmer; // long value myNumber = [NSNumber numberWithLong:0xabcdef]; NSLog(@"%lx",[myNumber longValue]); // 输出:abcdef // char value myNumber = [NSNumber numberWithChar:'X']; NSLog(@"%c", [myNumber charValue]); // 输出:X // float value floatNubmer = [NSNumber numberWithFloat:100.00]; NSLog(@"%g",[floatNubmer floatValue]); // 输出:100
9. 当把某一个对象以AddObject或者初始化的形式加入到Array,Dictionary中时,该对象retainCount将+1。
当把某一个对象以remover的形式从Array,Dictionary移除时,该对象retainCount将-1。
当使用copy 和mutableCopy 产生数组副本时,数组中每个元素的保持计数将+1。
10. 异常:exc_bad_access.
引用对象已经释放,即“魔鬼引用”。与VS中的“未将引用的对象应用到对象的实例”类似。
11. 更新UITableView数据问题:
采用Sqlite3轻量级数据库来存储数据,通过调试发现,数据库中数据已更新,但UITableView并没有更新。
解决方法:performSelectorOnMainThread:@selector(reloaddata) withObject:nil waitUntilDone:YES
但datasource并没有数据,需要重新加载数据。
- IOS 小技巧积累(持续更新)
- 小技巧积累 objective-c,持续更新
- IOS 小技巧 (持续更新ing.....)
- iOS 开发小技巧-持续更新~
- iOS小技巧总结(持续更新)
- iOS小技巧总结(持续更新)
- iOS部分小技巧 持续更新中
- iOS小技巧纪录(持续更新)
- 小技巧(持续更新)
- iOS 小技巧积累
- iOS小技巧积累
- IOS小积累&小技巧
- word技巧积累(持续更新中)
- iOS开发中总结的小技巧(持续更新中)
- iOS开发小技巧(持续更新中)
- iOS学习笔记之开发实用小技巧(持续更新)
- CSS 小技巧(持续更新)
- LINUX小技巧!持续更新......
- MVT定制HTC Desire HD(G10 DHD) 2.3.5 Sense3.5 ROM
- DSP学习的三个阶段
- 1286. Pascal Library
- C# 方法参数
- Telerik RadAsyncUpload Event OnFileUploaded
- IOS 小技巧积累(持续更新)
- struts的简单工作原理
- MFC菜单的建立
- 13. 第二次跳槽:意料之外的结局 - 上
- C# 抽象类的使用
- MySQL性能优化
- C# 构造函数 例子
- SQL SERVER ISNULL 和NULLIF 以及ISNULL 和IS NULL 的区别
- ppt使用技巧大全