d**0 发帖数: 660 | 1 若问一个简单的问题:
@interface {
NSIndexPath *currentPath;
}
@implementation
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(
NSIndexPath *)indexPath {
...
currentPath = indexPath;
...
}
currentPath不alloc不init,后面也不release,cell每select一次就执行一次,这么用有什么
问题没有?
谢谢, |
d**0 发帖数: 660 | 2 补充一下,
@implementation 里面还有其他很多的地方需要用到currentPath. |
i*****o 发帖数: 1714 | 3 你这样很可能会crash。indexpath在这个runloop结束后就很可能被放回release pool
,说不定什么时候系统就把它给回收了,被回收了你再用currentpath就到lala land去
了。
所以你要求retain这个object,不用时再release。
★ 发自iPhone App: ChineseWeb - 中文网站浏览器
【在 d**0 的大作中提到】 : 补充一下, : @implementation 里面还有其他很多的地方需要用到currentPath.
|
d**0 发帖数: 660 | 4 谢谢,现在开始用xcode4.2,不用再retain/release了, 才发现之前似乎有问题。
pool
【在 i*****o 的大作中提到】 : 你这样很可能会crash。indexpath在这个runloop结束后就很可能被放回release pool : ,说不定什么时候系统就把它给回收了,被回收了你再用currentpath就到lala land去 : 了。 : 所以你要求retain这个object,不用时再release。 : : ★ 发自iPhone App: ChineseWeb - 中文网站浏览器
|
f*****Q 发帖数: 1912 | 5 你把行列两个数记下来不必记指针方便多了么?用的时候效率也高些。 |
i*****o 发帖数: 1714 | 6 去看了看,真的可以不用再操心object life cycle 了。而且不是用garbage
collector。比java还牛。
不过这么重要的东西苹果就偷偷地放到xcode里,也不宣传一下。不是它家的风格。
【在 d**0 的大作中提到】 : 谢谢,现在开始用xcode4.2,不用再retain/release了, 才发现之前似乎有问题。 : : pool
|
d**0 发帖数: 660 | 7 没听明白,这样我怎么track current是哪一个?
【在 f*****Q 的大作中提到】 : 你把行列两个数记下来不必记指针方便多了么?用的时候效率也高些。
|
d**0 发帖数: 660 | 8 WWDC有一整个section 讲的就是这个。现在只需要确保没有retain loop就可以了。不
过还是有些bug,不幸运地被我遇到了,只能等下一次更新。
【在 i*****o 的大作中提到】 : 去看了看,真的可以不用再操心object life cycle 了。而且不是用garbage : collector。比java还牛。 : 不过这么重要的东西苹果就偷偷地放到xcode里,也不宣传一下。不是它家的风格。
|
f*****Q 发帖数: 1912 | 9 @interface {
int row;
int section;
}
@implementation
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(
NSIndexPath *)indexPath {
...
row = indexPath.row;
section = indexPath.section;
...
}
我一般都是这么用的。
【在 d**0 的大作中提到】 : 没听明白,这样我怎么track current是哪一个?
|
d**0 发帖数: 660 | 10 学习了。谢谢。不过现在用ARC很方便,可以偷懒了,呵呵。
【在 f*****Q 的大作中提到】 : @interface { : int row; : int section; : } : @implementation : - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:( : NSIndexPath *)indexPath { : ... : row = indexPath.row; : section = indexPath.section;
|
o****g 发帖数: 314 | 11 应该会经常crash吧。。。
至少你需要retain一个
【在 d**0 的大作中提到】 : 若问一个简单的问题: : @interface { : NSIndexPath *currentPath; : } : @implementation : - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:( : NSIndexPath *)indexPath { : ... : currentPath = indexPath; : ...
|