当谈到从同一类中的不同方法访问对象时,据我了解,有两种方法可以做到。考虑到我确实 想要保存一个指向该对象的属性指针,哪种方法更好?我一直在考虑这个问题,想知道是否有偏好共识。
#1:
NSArray *array = ... // Get array from somewhere
self.myArray = array;
[self doSomethingToMyArray];
这个方法不带参数,通过self通过自己的属性访问数组
- (void)doSomethingToMyArray
{
// Do stuff with/to the array via self.myArray
[self.myArray ...];
}
对比#2:
NSArray *array = ... // Get array from somewhere
self.myArray = array;
[self doSomething:array];
这个方法接受一个数组并通过它自己的方法参数访问这个数组
- (void)doSomething:(NSArray *)array
{
// Do stuff with/to the array via method parameter "array"
[array ...];
}
最佳答案
我认为这主要取决于 doSomethingToMyArray
的作用以及调用它的人。
相当明显的评论:
- 如果要对多个数组执行此操作,则需要使用参数;
- 如果你所做的实际上在逻辑上更多地与数组有关而不是与你的类有关(例如,你已经实现了数组顺序的随机化)那么它最好作为
NSArray 上的一个类别
而不是在该类中的任何地方; - 如果子类有任何可能想要重新定义获取数组的方式,那么您将需要在某处调用 getter;
- 如果子类或外部参与者应该能够在流程中的任何其他地方进行调解,则类似的问题也适用。
除了这些顾虑之外,我们中的许多人还是更喜欢这些东西无论如何都能发挥作用 — 请注意,您是在对数组 做一些事情,而不是与数组,在这种情况下,您会更倾向于 self.myArray = [self processedFormOf:array]
(或 self.myArray = [array arrayByDoingSomething];
如果类别提示说得通)。
所以,嗯,我认为没有明确的答案。
关于ios - 访问 obj 作为属性与方法参数(样式首选项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320941/