几个小问题。

来源:互联网 发布:python配置文件怎么写 编辑:程序博客网 时间:2024/05/18 20:11

栈和堆的理解。

栈是保存函数的局部变量和临时值,从main开始,方法一层一层的压栈,然后一层一层出栈。这点与 uinavigation很相似,也是一个压栈的过程。 而堆,主要是分配的内存。比如类的实例化,alloc,肯定就是在堆中开辟了一块新的内存,开辟的时候,给每个实例变量分配一块指针的地址或者是nsinteger这样的4个字节的大小,如果一个实例变量是nsarray,初始化的时候,只有一个指针,内容为nil,而对这个数组进行初始化的时候,相当于在内存是专门开辟了一块地方来存放object,这块内存的指针赋给这个array变量。我犯的错误就是, 没对这个变量进行初始化,所以它实际上是nil,[nil addobject:@“1”];是不会报错的。苹果为什么要这么设计呢??加入一个是否为nil的判断,应该也挺有必要。

另外遇到一个问题是,uiview的一个子类,在init的时候,忘了写[super init],导致[addsubview]的时候,一直出错,init相当于重写了super的init,如果不加super init的话,就不会初始化,这样当然不能添加到上一层的view咯。

第三个问题,我设置了一个全局错误断点,后来修改tableviewcell的时候,忘了删除constraints,导致每次在初始化cell的时候就挂在那个地方,然后也没有错误提示,整个人就懵逼了,后来我删了这个全局错误断点,然后系统告诉我错误原因,我删了之前控件的constraints,就ok了。   这个教训很深刻。

第四个问题,pickerview,有两个delegate,一个返回nsstring,一个返回uiview,我一直实验到底哪个具有优先级,得出的结论是uiview,后来冷静一会,想到nsstring实际上就是uiview里面加个table就好了。只要uiview也没事。

wificam的ui层面几乎全部完工咯。。。然后就是套入数据。

希望接下来顺利。


0 0