android-support-v4.jar或其它第三方jar包放进去后,无法添加源码出现
source no found
The Jar of this class file belongs to container 'Android Dependencies' which does not allow modifications to
source attachments on its entries
右击libs中的jar包->Build Path ->Add To Build Path,这样就可attach 源码了
再将存放源代码的source文件夹导入尽量即可
用Instruments 工具的前提是在Object-c 项目而不是C项目就可以的,也就是说能在手机上运行的项目,而不是在控制台运行的。
第一步:按住commond+I 或者选择Product ---->profile 进入一个页面。
第二步:选择Leaks 那一项。进入下个页面
第三步:在左上方有两个选择Allocations 和Leaks 选择Leaks 那条。
第四步:在左中方有个小的选择项,点击选择Leaks
第五步:在右中方选择 Call Tree ---->Call Tree
第六步:把左下边的Call Tree点开,选中 Invert Call Tree 和Hide System Libaries 这两项。
第七步:这也是最后一步,就是在模拟器上运行你的项目,把所有的地方都运行下,这时如果有内存泄露那么在中间走动的蓝条下方就会出现红条,并且在中下方会出现内存泄露的方法名字,双击点进入就可以定位到指定的位置了。。
下面是一个简单的截图,可以下载下来看看。
在ios中初始化一个数组,比如:
NSMutableArray *array = [[NSMutableArray alloc] init];
如果,想看这个array中某个index下的object是否为空时,怎么做呢?
我平常java用惯了,所以很自然的,使用索引去取,然后判断是不是nil就行:
[array objectAtIndex:0];
结果,抛出异常,*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
原因是,NSMutableArray初始化的时候是空数组,并不存在index是0的对象,所以取数据越界了。
,在数组初始化后,先给根据数组的长度填充NSNull对象。
for (NSInteger i = 0; i < 4; ++i) { [array addObject:[NSNull null]]; }
这样,再取出的数据就不会抛出NSRangeException异常了。
以后想要使用非空对象时,直接替换对应index的NSNull即可:
[array replaceObjectAtIndex:0 withObject:object];