XCode5升级到6后发现的问题及CNBlogs4IOS的bug解决
:IOS    :kukei    :2014-10-21 20:31:12
:评论(1)

这两天将我的t430从OXS10.9升级到10.10了,自然xcode也从5时代进入了6时代,问题自然也来。

1.An instance 0x7fe7ba22a000 of class UITableView was deallocated while key value observers were still registered with it。

问题原因是UITableView的实例被回收时,UITableView的实例注册的观察者还没取消,因此报错。我疑惑的是这种情况再xcode5上不报错,奇怪。

解决方法当让是在UITableView回收时取消观察了,代码如下:

- (void)dealloc
{
    [header free];
    [footer free];
}

free函数举例为:

- (void) free
{
    NSString *SDRObserverContentOffset = [_c.....
ios开发3.5和4.0寸屏幕自适应中的一点问题
:IOS    :kukei    :2014-04-14 16:06:35
:评论(1)

在开发iso应用中需要考虑到ip4的3.5寸屏幕和ip5的4寸屏幕的高度不一样的问题。常见的问题有滚动条位置,底部被挡住等情况;我遇见是tableview中添加下拉上提刷新功能时刷新指示器显示位置的问题。

我自己根据网上已有代码写了一个下拉上提刷新插件:http://git.oschina.net/supdo/SDRefresh;

插件要根据tableview的高度来设置刷新指示器显示位置,为了正常工作,我在应用中对tableview的高度进行手工设置,代码如下:

- (void)viewDidLayoutSubviews
{
    [super viewWillLayoutSubviews];
        
    CGSize screenSize =  [UIScreen mainScreen].bounds.size;
    self.myBlogTable.frame = CGRectMake(0, 0,.....
IOS中用segment control控制table view 的切换
:IOS    :kukei    :2014-04-04 12:02:43
:评论(1)
项目中的文章列表分为最新和最热两个列表,格式完全一样,需要在一个页面上切换两个列表的显示。

方案一:

一个tableview,三个数据数组(一个最新,一个最热,一个指针引用),然后用segment切换来控制tableview的加载数据,切换时用reloaddata重新加载需要显示的数据。需要说明tableview加了下拉刷新的功能。

实现:功能已实现。

问题:

  1. 切换时重新加载内容,徒增性能损耗;

  2. 因为cell中有作者头像,是从互联网上加载的,因此每次重新加载tableview时都重新下载一遍头像,这对流量无端的损耗是不可饶恕的,是注定要被用户抛弃的。即使使用了异步加载,图像缓存技术,但是这个隐患还是很大。

  3. 滚动位置在切换时丢失,这个丢失是对用户体验而言的。实际是两个数据源大小不同,tableview的显示位置固定,影响用户体验。

  4. 下拉刷新完成后也会重新加载内容,如果刷新中切换页面,可能导致刷新内容丢失,或者刷新提示混乱。

  5. 试图解决方案:在.....
在NSMutableArray中用containsObject判断是否存在无效的问题
:IOS    :kukei    :2014-03-20 18:30:30
:评论(0)

我们常常用NSMutableArray来保存自定义的模型类,这样会存在排重的问题,因为每个模型类内容虽然完全一样,但是每个实例的内存地址不一样,直接用containsObject来排重结果是每次都不存在重复数据。

解决办法:

我们的模型类肯定都是继承NSObject的,那就在们的类中重载 - (BOOL)isEqual: (id)object ,在这个函数中判断是否重复即可。

经过验证,可行。

UIScrollView在下拉时contentOffset等属性的变化
:IOS    :kukei    :2014-03-18 11:45:00
:评论(1)

在处理UIScrollView的子类UITableView等的下拉刷新功能时,学习了contentOffset等属性的变化情况,在此记录总结一下。

首先如果存在statusbar和navbar则在初始状态下UIScrollView的contentInset.top就是64,contentOffset.y是0,因为statusbar高度20,navbar高度44.

此时在UIScrollView中加一个view,frame是(0,-50,30,50),则UIScrollView的contentInset.top就是64,contentOffset.y是-64;至于此处contentInset.top是64,而不是14,我认为只能理解为新加的view把statusbar和navbar原来占的空间上去了,而不是覆盖了;至于contentOffset.y是-64而不是正64,也不是-50,要看怎么理解此时UIScrollView的可视窗口范.....

IOS开发学习知识点一
:IOS    :kukei    :2014-03-12 10:55:54
:评论(0)

以下信息没有排序分类,想到写到,用到记到。

  1. storyboard上每个对象都是一个view。

  2. view是嵌套的,父view用方法superview调用获得。

  3. performSegueWithIdentifier来触发storyboard上定义好的segue,即定义好的导向线条。

  4. 重新build后你刚才该的代码没有生效,调试发现乱跳行,此时需要clean一下,clean菜单在product下。