iOS7 CookBook精彩瞬间(一)property、selector细节、__unused
1.我们常常使用nonatomic,很多人只知道它的效率较高,却不知道其含义,其含义是非线程安全的,也就是说多线程修改时不加锁,可能出现多个线程先后修改而成为脏数据的情况。
2.unsafe_unretained和assign的作用是一致的,如果对象数据也采用这种方式,这个property就只是指向数据的指针而已,这样说来,似乎assign和weak是一样的,但他们有个很大的区别,在下一条中说明。
3.weak也只是指向数据而不retain,但是当weak指针指向的数据释放后,weak指针自动变为nil,而assign的不会。
4.copy和strong作用一致,但是系统会以拷贝的方式来生成新对象,copy常用于NSString等对象,注意要实现copy必须遵循NSCopying或者NSMutableCopying协议。有关NSString为何使用copy的深入探讨请看来自CocoaChina的文章:
NSString属性什么时候用copy,什么时候用strong?。
5.方法名是selector用来查找方法的标识,它由method name和external name组成,而不包括internal part。
例如下面的方法
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
其中method name为tableView,external name为canEditRowAtIndexPath,internal part包括对象类型和对象名,因此方法名应该描述为:tableView:canEditRowAtIndexPath:。
利用这一点,可以方便很多事情,例如我们拖线实现按钮的点击事件时,默认生成的方法如下:
我们需要先强转类型为UIButton*再进一步操作。
- (IBAction)btnClick:(id)sender {
   __unused UIButton *btn = (UIButton *)sender;
}
我们知道方法名并不包括对象类型和对象名,因此我们可以直接修改如下:
- (IBAction)btnClick:(UIButton *)btn {
}
这样可以避免一系列的不必要操作。
6.我们定义了变量后,如果不使用就会出现警告,如果在变量前加__unused前缀,就可以免除警告。其原理是告诉编译器,如果变量未使用就不参与编译。
7.对于协议中的变量和方法,默认是@required,并且对于变量,必须要重新用property定义。
iOS7 CookBook精彩瞬间(一)property、selector细节、__unused的更多相关文章
- iOS7 CookBook精彩瞬间(二)NSSet、通过Subscript访问类成员等
		
1.NSSet的用法 ①NSSet是一种无序集合,基于hash实现,可以在线性时间复杂度内查找某个元素,如果要让元素有序,应当使用NSOrderedSet,要让集合可变,与NSArray类似,使用NS ...
 - iOS7 CookBook精彩瞬间(三)UIActivityViewController的基本使用及自定义Activity
		
1.基本使用 UIActivityViewController主要用于分享内容,创建activityView的方法很简单,调用下面的方法创建: [[UIActivityViewController a ...
 - UITableView的使用
		
参考:IOS7.0 programming cookbook. http://www.cnblogs.com/kenshincui/p/3931948.html http://blog.csdn.ne ...
 - UIView属性及方法
		
@property(nonatomic) CGFloat alpha //设置视图的透明度 //透明度的设置从最小0.0到1.0 ,1.0为完全不透明, //其中这个属性只影响当前视图,并不会影响其子 ...
 - WPF进阶技巧和实战06-控件模板
		
逻辑树和可视化树 System.Windows.LogicalTreeHelper System.Windows.Media.VisualTreeHelper 逻辑树类(LogicalTreeHelp ...
 - WPF进阶技巧和实战03-控件(5-列表、树、网格04)
		
ListView控件 ListView继承自简单的没有特色的ListBox,增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以重新构建列表. ListView类继承 ...
 - Spring学习记录(二)---容器和bean属性配置
		
下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...
 - Blend 2015 教程 (三) 模板
		
前一篇讲述了一些基本样式的修改方法,并搭建了Style层的基本框架,本篇将进一步修改ListBox的样式. 1. 首先选中ListBox控件,在美工板导航栏中点击ListBox,选择 编辑其他模板-编 ...
 - Blend 2015 教程 (四)控件模板
		
前一篇讲述了修改ListBox样式的方法,本篇将修改性别显示区域的样式. 1. 选择ListBox控件,编辑ItemTemplate的当前项,选择CheckBox控件,在美工板导航栏中点击CheckB ...
 
随机推荐
- 51nod 1103 N的倍数(抽屉原理)
			
1103 N的倍数 题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍 ...
 - 【USACO】股票市场
			
题目描述 尽管奶牛天生谨慎,它们仍然在住房抵押信贷市场中大受打击,现在它们准备在股市上碰碰运 气.贝西有内部消息,她知道 S 只股票在今后 D 天内的价格. 假设在一开始,她筹集了 M 元钱,那么她该 ...
 - poj 2960 S-Nim
			
S-Nim Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4113 Accepted: 2158 Description ...
 - linux x86内核中的分页机制
			
Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页.对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求: ...
 - 智能指针之 auto_ptr
			
C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理,该智能指针在C++11中已经被弃用,转而由unique_ptr替代, 那这次使用和实现,就具体讲一下auto_pt ...
 - python 中常见绘图属性
			
fig = plt.figure(facecolor='w')#生成图 ax = fig.add_subplot(111, projection='3d')#绘制子图 ax.scatter(t[0], ...
 - 关于一些基础的Java问题的解答(五)
			
21. 实现多线程的两种方法:Thread与Runable 在Java中实现多线程编程有以下几个方法: 1.继承Thread类,重写run方法 public class Test { public s ...
 - Linux安装JProfiler监控tomcat
			
下载JProfiler包wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2.rpm 安装JPro ...
 - SQL Server用户自定义数据类型
			
用户自定义数据类型:基于系统数据类型,由数据库管理员生成.利用系统存储过程定义用户自定义数据类型` Sp_addtype [@typename=] 新数据类型名, [@phystype=] 系统数据类 ...
 - Tomcat安装及问题排查方法
			
简介: Apache Jakarta的开源项目 JSP/Servlet容器 安装: 1.1进入 Tomcat 官方下载地址 选择合适版本下载,并解压到本地. (备注)Tomcat 8.5 要求 JDK ...