IOS 小技巧积累
转自:http://blog.csdn.net/mars2639/article/details/7352012
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 小技巧积累的更多相关文章
- iOS小技巧总结,绝对有你想要的
原文链接 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIV ...
- iOS开发:小技巧积累
1.获取全局的Delegate对象,这样我们可以调用这个对象里的方法和变量: [(MyAppDelegate*)[[UIApplication sharedApplication] delegate] ...
- iOS开发:小技巧积累2
http://blog.sina.com.cn/s/articlelist_1935098904_1_1.html .获取全局的Delegate对象,这样我们可以调用这个对象里的方法和变量: [(My ...
- iOS小技巧 - 和屏幕等宽的Table分割线
前言 因为本人也是学习iOS才一个多月,在写程序的过程中经常会遇到一些看似应该很简单,但是要解决好却要知道一点小trick的问题. 因此后面会陆续记一些这类问题,一来加深印象,二来也可以做个备忘录. ...
- iOS小技巧:用runtime 解决UIButton 重复点击问题
http://www.cocoachina.com/ios/20150911/13260.html 作者:uxyheaven 授权本站转载. 什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的 ...
- iOS小技巧3
将颜色合成图片 将颜色合成图片 +(UIImage *)imageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0.0f, 1 ...
- iOS小技巧2
这段代码是实现了类似QQ空间"我的空间"里面的圆形头像 //圆形的头像 UIImageView * headImage = [[UIImageView alloc]initWith ...
- 总有你需要的之 ios 小技巧 (下)
图片上绘制文字 写一个UIImage的category NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultPara ...
- IOS小技巧——使用FMDB时如何把一个对像中的NSArray数组属性存到表中
http://blog.csdn.net/github_29614995/article/details/46797917 在开发的当中,往往碰到要将数据持久化的时候用到FMDB,但是碰到模型中的属性 ...
随机推荐
- 感知器Perceptron
Perceptron: 1.一种基于监督的线性分类器,其特点是:1)模型简单,具有很少的学习参数:2)具有可视性,一条直线即可划分:3)基于人工神经网络的原理. 其结构图为: 2.学习的关键技术: ...
- Python 笔记 : 类和继承
# -*- coding= utf-8 -*- # 文件编码定义的语法规则是: coding[:=]/s*([-/w.]+) # 未指定编码将默认为 : ASCII # 同时要注意物理文件的编码也要 ...
- ASP.NET MVC3 系列教程 – Web Pages 1.0
http://www.cnblogs.com/highend/archive/2011/04/14/aspnet_mvc3_web_pages.html I:Web Pages 1.0中以“_”开头的 ...
- SQL Server 2000的并发连接数是多少
开始->管理工具->性能(或者是运行里面输入 mmc)然后通过 添加计数器添加 SQL 的常用统计(MSSQL General Statistics) 然后在下面列出的项目里面选择 用户连 ...
- python setup.py install 失败
由于curl证书太老,所以无法找到一些对应的版本. 如下更新证书即可: curl http://curl.haxx.se/ca/cacert.pem > /etc/pki/tls/certs/c ...
- Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消
Git Book 中文版 - Git的撤消操作 - 重置, 签出 和 撤消 Git的撤消操作 - 重置, 签出 和 撤消 Git提供了多种修复你开发过程中的错误的方法. 方法的选择取决于你的情况: 包 ...
- DB2 递归查询
上一篇中讲解了ORACLE中的递归查询,下面我们看一下DB2中如何使用递归查询: 同样的我们先新建一个表来存储以上信息,并插入测试数据: --建表 create table FAMILY ( pers ...
- 宏_CRTIMP分析
CRTIMP是C run time implement的简写,C运行库的实现的意思. 作为用户代码,不应该使用这个东西. 该参数决定 运行时 到底用 动态链接库 还是静态链接 #ifndef _CRT ...
- thymeleaf中的th:assert用法
th:assert 断言标签 th:assert属性可以指定一个以逗号分隔的表达式对其进行评估并生产适用于每一个评价,如果不抛出异常 <div th:assert="${onevar} ...
- HDU 2063 过山车(二分匹配入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配最大匹配数简单题,匈牙利算法.学习二分匹配传送门:http://blog.csdn.ne ...