小编nic*_*ick的帖子

为什么可以将字符串分配给char*指针,而不是char []数组?

有人可以解释为什么这适用于指针:

char * str1;

str1 = "Hello1";

str1 = "new string";

// but not this
char str2 [] = "hello";
str2 = "four";

// or this
char str3 [];
str3 = "hello";
str3 = "hello";
Run Code Online (Sandbox Code Playgroud)

c string pointers initialization reusability

61
推荐指数
5
解决办法
9万
查看次数

TableView单元重用和不需要的检查标记 - 这让我感到害怕


Apple的iOS TableView和细胞重用正在扼杀我.我搜索,搜索和研究,但找不到好的文档或好的答案.问题是当TableView重新使用单元格时,在表格视图的下方单元格中重复设置在所选单元格上的Checkmarks(单元格附件)之类的内容.我知道细胞重用是由于内存限制而设计的,但是如果你有一个包含50个项目的列表,并且它开始在不需要它们的地方设置额外的复选标记,这使整个努力变得毫无用处.

我想要做的就是在我选择的单元格上设置复选标记.我已经尝试使用我自己的自定义单元类,以及由锅炉板TableView类生成的标准单元格,但它总是最终相同.

Apple甚至还有一个名为TouchCell的示例项目,您可以从开发中心下载,该项目应该显示使用左侧带有图像控件的自定义单元格设置复选标记的不同方式.该项目使用字典对象作为数据源而不是可静音数组,因此对于每个项目都有一个字符串值和bool检查值.此bool检查值应设置复选标记,以便它可以跟踪所选项目.只要使用15个以上的单元格填充TableView,此示例项目也会显示此愚蠢行为.单元格的重用开始设置不需要的复选标记.

我甚至尝试过为每个细胞使用一个真正独特的细胞标识符.因此,不是每个单元格都有@"Acell"之类的东西,我使用静态int,强制转换为字符串,以便细胞得到@"cell1",@"cell2"等.在测试期间,我可以看到数百个新细胞在哪里滚动期间生成,即使表只有30个项目.

它确实修复了复选标记重复问题,但我怀疑内存使用率过高.

当它们滚动回视图时,好像当前不在表的可视区域中的单元格会再次创建.

有没有人想出一个优雅的解决方案来解决这种恼人的行为?

reusability uitableview checkmark

11
推荐指数
1
解决办法
4652
查看次数

调用.removeObserver for NSNotificationCenter = Swift deinit()的正确位置?

我已经阅读了很多关于正确的地方调用.removeObserver for NSNotificationCenter的建议,因为viewDidUnload不是一个选项.

我只是想知道Swift中的新deinit()是否是一个不错的选择?

-缺口

nsnotificationcenter viewdidunload swift

9
推荐指数
1
解决办法
4046
查看次数

awakeFromNib的好处?

我一直在学习coredata,通过制作许多基于xcode Navigation控制器模板的简单测试应用程序并选中"使用coredata".

App委托中的awakeFromNib方法一直是我的问题来源,因为我正在向控制器添加其他视图并更改加载顺序,因此RootViewController可能是第二个或第三个选择.

我已经弄清楚awakeFromNib正在做什么,我已经删除了它,因此app委托不再绑定到任何特定的视图.(所以当我想加载RootViewController时,我会将其作为常规视图加载,并使用自己的viewDidLoad为视图初始化managedObjectContext).

我的问题:在AppDelegate中使用awakeFromNIb是否有性能提升或其他好处?或者它只是我从viewDidLoad方法做同样的事情的另一种方式?

delegates views ios awakefromnib

7
推荐指数
1
解决办法
4364
查看次数