Ios 内存管理和性能-是否声明属性
我已经面对过这种情况好几次了,但我仍然不明白到底有什么区别。这里有一种情况:我有一个Ios 内存管理和性能-是否声明属性,ios,objective-c,memory-management,properties,automatic-ref-counting,Ios,Objective C,Memory Management,Properties,Automatic Ref Counting,我已经面对过这种情况好几次了,但我仍然不明白到底有什么区别。这里有一种情况:我有一个UITableViewController和几个UITextFields,现在,当调用方法textfielddendediting时,它从textField获取数据并保存到数据库中。这非常简单,因为我有一个TapGestureRecognitor,所以当用户从textField中取出文本并保存到数据库中。每次用户在屏幕中输入textField时,它都会这样做。此屏幕用于更改数据,因此,用户可能只需要更改一个文本字
UITableViewController
和几个UITextFields
,现在,当调用方法textfielddendediting
时,它从textField
获取数据并保存到数据库中。这非常简单,因为我有一个TapGestureRecognitor
,所以当用户从textField
中取出文本并保存到数据库中。每次用户在屏幕中输入textField
时,它都会这样做。此屏幕用于更改数据,因此,用户可能只需要更改一个文本字段
,否则我会立即将其保存到数据库
,这是我的问题
另一种方法是为每个textField
创建BOOL
属性
,当textField
上的数据发生更改时将其设置为true,当用户离开屏幕时,检查更改的textFields
,并将保存到数据库中。这样可以避免每次textField
更改都发送网络请求,并且只连接到网络一次。若用户有一个坏的连接,这将是更好的
现在,我喜欢让我的代码保持简单,我总是关心设置许多属性和编写许多值的故事。基本上,我的想法是,我写的属性越多,我使用的内存就越多。这是真的吗?无论如何,我想要的是获得关于这个场景的一些意见,以及您更喜欢这两种方法中的哪一种
谢谢。一些BOOL属性实际上不会使用额外的内存。你什么都不担心。避免不必要的网络调用远比节省六个字节的内存重要。在一个视图中会有20-30个BOOL
属性。我同意你关于网络电话的看法。我只是担心,因为有时候我有很多不同类型的属性
。30BOOL
属性将添加30个字节。就这样。除非您计划创建此视图控制器的数千个实例(一次全部在内存中),否则您什么都不用担心。不要担心像这样简单的小属性,它只是一个丑陋的代码。为什么不将与textField对象相关的所有BOOL存储在字典中,其中键作为textField标记作为字符串,值作为BOOL。或者类似的事情。。。或者,更好的是,使对象包含两个属性,一个是对textField标记的引用,另一个是BOOL。20-30个bool只会使您的代码不可能在以后读取和重用。