FML!!真是搓了,难怪好朋友说我想出来的都是写蛋疼的玩意儿,唉~

这是我之前的写法:


为什么要这么搓呢??直接遍历 _shapes NSMutableArray 对象不是很好,为什么一定要挤在一起呢?!!

不过一些小知识点还是值得记录下来的:

1。遍历(不管是Iteroter还是for循环)的过程中不能从 NSMutableArray中删除Items,这在Java里面也是一样的,Java中会报出一个什么Concurrency...错误

2。iteroter的话可以才用备份指针的方法对item进行安全的删除,如以上代码所书

3。集中遍历容器的方案:for(id object in _shapes), for(int i = 0; i < [_shapes count]; ++i), Iteroter...

4。代码尾部那段删除其中符合特定条件条目的方案应该算是比较优秀,高效的,少了removeItem,复制啊什么的东西

5。还有BAD_EXEC_ACCESS的问题,如果试图去访问已经释放掉的对象的成员变量,为报出此种错误。另外,将objc字符串不小心写成c风格字符串也可能报出该错。

6。objective-c 的 try-catch-finally 写法:

NSString* test = [NSStringstringWithString:@"ss"];

@try {

[testcharacterAtIndex:6];

}

@catch (NSException * e) {

NSLog(@"Exception: %@", e);

}

@finally {

NSLog(@"finally");

}


下面将贴出我修改过之后的该方法,太蛋疼了,方向一错,工作量就大大增加,而且还让人产生一股在挣扎中优雅的盲目自得感觉。。。~。~


至此,是直接从_shapes里面拿了,但是一潮未平一潮又起,结果又遇到 EXC_BAD_ACCESS错误了,而且仅此提示以外,别无其他信息,迷茫了~

我推测原因可能是因为对 _shapes 容器的不安全操作引起的,不过没办法了,不想再去多理会这个事情。

其实出于项目需要,并不需要在触摸屏幕的时候新建出一大堆的形状对象,我只不过是看不惯这只拦路虎,一心想把他干掉

不过现在看来是没办法了,娘的,且容他再活几日吧,等哥哥技术上来了一并将它收拾之~

so,现在的情形清晰明了:

1。如果要持续往屏幕中添加形状的话,用刚开始那种方案,弊端就是 BYShape的数组引用会越来越多,虽然起所指向的对象中的成员对象都被架空干掉了,但我还是觉着这么写他妈的太别扭。

2。如果不需要持续往屏幕中点击添加形状的话,那么就直接用第二种方案吧,这种情况下不会报出 EXC_BAD_ACCESS 的错误。。

不过我还是不死心,这个问题一定得解决了~

老版得cleanEdition:



你可能感兴趣的:(朋友)