相关文章:http://jianyu996.blog.163.com/blog/static/1121145552012102293653906/

初学iOS开发,目前尝试用xib来构建UI

构建时有2种常用的方式:initWithNibName和loadNibNamed

我最初接触到的,是自定义一个复杂的UITableViewCell

然后在setData里做一些替换UI文字和图片的工作

于是乎,下一个ViewController我也这么做

报错 发现[[NSBundle mainBundle] loadNibNamed:@”MyViewController” owner:self options:nil][0]是一个UIView对象

没关系,UIViewController不是还提供了initWithNibName:bundle:方法么,于是乎

编译通过,但是奇怪的是,initWithNibName:bundle:里的自定义代码没有生效,发现xib里映射的对象全是nil

经过搜索查证,发现应该把自定义代码放在viewDidLoad里面

其实Xcode在生成文件模版的时候也提示开发者了

init的时候Custom initialization

viewDidLoad才是Do any additional setup after loading the view

 

转自http://wangwenhao.net/2011/10/26/the-property-in-ios-develop/

大家都知道@property和@synthesize可以自动生成某个类成员变量的存取方法,但可能对property中的一些属性不是很了解,网上的一些介绍有的不是很正确,感觉会误导新手,于是准备详细介绍一下property中的详细属性。

先介绍一下默认的情况:

readwrite:这个属性是默认的情况,会自动为你生成存取器

assign:这个属性一般用来处理基础类型,比如int、float等等,如果你声明的属性是基础类型的话,assign是默认的,你可以不加这个属性

对于assign来说,他的存取器代码是这样的:

natomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。

然后说一下其他的情况:

readonly:只生成getter不会有setter方法

copy:这个会自动生成你赋值对象的克隆,相当于在内存中新生成了该对象的副本,这样一来,改变赋值对象就不会改变你声明的这个成员变量了

retain:会自动retain赋值对象,具体实现如下:

 

可见首先要判断一下当前myField是否就是新赋值来的对象,如果不是要将自己release掉,之后才会进行赋值及retain。

nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。