一、iphone页面传递数据的五种方法:
1. 写文件
2. plist
3. SQLite
4. 协议和代理
5. 传指针
二、备份变量名、self.
1.
{ ... _window; }
@property (...) ... window;
这样保证不会直接写 window = ...,而必须写成 self.window. 也就是说,会提醒你加上self以调用setter & getter.
由于,copy 和 retain 型的property 的setter 会释放原来的对象,所以在dealloc中可以按下面的写法来释放资源:
self.str = nil;
self.window = nil;
带参构造函数的通常写法:
- (id) initWithPath:(NSString *)_filePath {
if (!_filePath) {
p("error movie Db: invalid parameter in constructor!");
return nil;
}
self = [super init];
if (!self) {
return nil;
}
self.filePath = _filePath;
MovieList *tmp = [[MovieList alloc] init];
self.iMovieList = tmp;
[tmp release];
return self;
}
如果直接写成 self.iMovieList = [[MovieList alloc] init];
这样会造成泄露,因为self.iMovieList会调用setter,从而使右侧临时变量的retainCount变为2。当dealloc的时候,release 仅仅使引用计数变为1,而没有真正释放alloc 出来的内存。