读书时间 2012/01/03 iPhone/iPad

本文将探讨iOS开发中遇到的几个常见问题,并提供详细的解决方案,包括应用启动问题、列表显示空缺、控制器初始化错误等。文章还涵盖了如何避免在列表操作中出现删除失败的问题,以及如何正确处理异常,如EXC_BAD_ACCESS错误。此外,通过实例分析,解释了如何正确使用代理方法和数据源方法,确保应用程序的稳定性和用户体验。

《iPhone 3基础教程》

chap 9 http://


Q:为什么没有任何东西睛显示?

     A:新版本的程序使用了不同的application life cycle methods



- (void) applicationDidFinishLaunching:(UIApplication *)application {

[windowaddSubview:navController.view];

[windowmakeKeyAndVisible];

}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    

   // Override point for customization after application launch.

    [self.windowaddSubview:navController.view];

    [self.windowmakeKeyAndVisible];

    

   returnYES;

}


注1:使用didFinishLaunchingWithOptions method.

注2:显示中see的东东,只与windows/view有关,与controller无关。


CheckListController

Q:空的列表?

   A:data source method name is wrong !


- (NSInteger)tableView:(UITableView *)tableView numberOfRosInSection:(NSInteger)section {

                                                          ^ numberOfRowsInSection 

return [listcount];

}


Q:有没有一个简单办法直接从protocol中copy方法名?




MoveMe Controller 


Q:启动时crsh

   A:MoveMeController初始化的时候,类名写错(编译系统居然只是提示,而未错误)


// Move Me 

MoveMeController *moveMeController = [[moveMeControlleralloc]initWithStyle:UITableViewStylePlain];

                                               ^MoveMeController

moveMeController.title =@"Move Me"

moveMeController.rowImage = [UIImageimageNamed:@"moveMeIcon.png"];

[arrayaddObject:moveMeController];

[moveMeControllerrelease];


Note: 35 mins 


DeleteMe  Controller 

Q: why not delete ?

  A: method name for delete commit is wrong 


- (void) tableView:(UITableView *)tableView comitEditingStyle:(UITableViewCellEditingStyle

                                             ^ should be commitEditingStyle

   editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

   ...

}


Q: delete发生的时候,地后面的list有没有关质影响?I think no !

Note: 30 mins


Detail Edit Controller  ( President View Controller ) 


Error : 


2012-01-03 17:31:43.116 Nav[3159:207] -[__NSCFSet objectAtIndex:]: unrecognized selector sent to instance 0x6001b50

2012-01-03 17:31:43.118 Nav[3159:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet objectAtIndex:]: unrecognized selector sent to instance 0x6001b50'

*** Call stack at first throw:

(



execting the following statement: 

President *thePresident = [listobjectAtIndex:row];


改成 [self.list xxxxxx]


(gdb) continue

(gdb) continue

2012-01-03 17:37:23.962 Nav[3196:207] -[UIGestureRecognizerTarget name]: unrecognized selector sent to instance 0x4b2aaf0

2012-01-03 17:37:23.964 Nav[3196:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIGestureRecognizerTarget name]: unrecognized selector sent to instance 0x4b2aaf0'

*** Call stack at first throw:



(gdb) continue

Current language:  auto; currently objective-c

(gdb) continue

Program received signal:  “EXC_BAD_ACCESS”.

(gdb) 


发现:thePresident的name/party两个property是out of scope,而fromYear/toYear则不是。Wiered !


加上强制类型转换

NSUInteger row = [indexPathrow];

President *thePresident = (President *)[self.listobjectAtIndex:row];

cell.textLabel.text = thePresident.name;

cell.detailTextLabel.text = [NSStringstringWithFormat:@"%@-%@", thePresident.fromYear, thePresident.toYear];


step over the following statemnt 

cell.textLabel.text = thePresident.name;


the system hanged.


Continue: starting at 8:05 PM


reboot the system. the following errors: 


(gdb) continue

Current language:  auto; currently objective-c

(gdb) continue

Program received signal:  “EXC_BAD_ACCESS”.

(gdb) 


change the President.name to President.fullName, 

The same error. 


* 关于EXC_BAD_ACCESS的一些信息:

http://www.cocoachina.com/macdev/objc/2011/0219/2661.html


President.name is out of scope.


* 8:37 PM,终于找到root cause !

NSMutableArray *array = [unarchiverdecodeObjectForKey:@"Presidents"];

self.list = array;

[unarchiverfinishDecoding];

[unarchiverrelease];

//[array release];

           ^ 错误release了array!



* 8:50 PM, start PresidentDetailController 

9:04 PM, end it. Page 229.  To be continued tomorrow. 



本数据集来源于 2024 年 7 月在江西省中东部余干县、贵溪市、金溪县丘陵林地采集的千枚岩、红砂岩、花岗岩母质发育红壤关键带剖面土壤实测数据,空间覆盖 3 个县域不同岩性风化壳林地,采样点位经纬度分别为千枚岩剖面 P10(116.8316°E,28.5269°N)、红砂岩剖面 P08(117.1048°E,28.3492°N)、花岗岩剖面 P04(116.6883°E,27.9963°N);垂直空间采样深度存在差异,千枚岩与花岗岩剖面采样深度 0~600 cm,红砂岩剖面采样深度 0~450 cm,垂直分层采样分辨率为 0~50 cm 区间分 0~20 cm、20~50 cm 两层,50 cm 以下土层以 50 cm 为固定间隔分层,整套数据集共包含 36 条土壤剖面分层记录,其中 P10 千枚岩剖面 13 条、P08 红砂岩剖面 11 条、P04 花岗岩剖面 13 条。数据采集时间为 2024 年 7 月,实验室理化指标、矿物测试、酸碱滴定及统计建模工作于 2024 年 7 月 —2026 年 5 月完成,无时间序列连续监测数据,仅为单次野外剖面采样静态数据集。 数据集包含野外剖面基础信息、土壤酸碱滴定原始数据、土壤酸度指标、交换性盐基与交换性酸、土壤机械组成、有机质、黏土与原生矿物半定量 XRD 数据、无定形 / 晶形铁铝氧化物含量。全量理化指标计量单位统一规范:酸缓冲容量 pHBC 单位为 cmol・kg⁻¹・pH⁻¹,交换性酸、交换性盐基离子单位为 cmol・kg⁻¹,矿物以质量百分比(%)表示,、黏粒 / 粉粒 / 砂粒、有机质、铁铝氧化物单位均为g/kg,pH 为无量纲数值。 覆盖范围: 中位纬度: 28.2616 中位经度: 116.89654999999999 南界纬度: 27.9963 西界经度: 116.6883 北界纬度: 28.5269 东界经
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值