- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的类loginController的实现中创建了一个NSMutableArray。可变数组包含一组字符串。我想将可变数组及其对象传递给我的 cocoa 项目中的其他类。传递数组的最佳方式是什么?
最佳答案
最基本的情况是您的登录 Controller 只需将阵列的快照传递给另一个 Controller 。在这种情况下,您的登录 Controller 将需要引用其他类的实例,并且它将这些实例的某些属性设置为数组。请记住使用 copy
声明属性属性,以便接收者不会保留您的私有(private)可变数组。
如果您希望其他 Controller 能够修改数组,不要让他们拥有您的可变数组 - 这会导致难以发现的错误。
相反,您需要在登录 Controller 上实现一个属性,而不是在每个其他 Controller 上实现一个属性。登录 Controller 的属性应该至少有一个 getter 和 setter(您可以 @synthesize
),但您可以实现 more specific accessor methods为了提高效率。
一旦您拥有此属性,其他 Controller 应该以符合 KVO 的方式访问该属性。如果您实现特定的访问器,他们就可以使用这些访问器。否则,他们需要发送 mutableArrayValueForKey:
到登录 Controller 。当他们访问该代理数组的内容时,他们实际上访问了登录 Controller 的数组;当它们改变代理数组时,它们会依次改变登录 Controller 的数组。
接下来是实际的 KVO 部分。您将希望其他 Controller 知道其中一个 Controller (或登录 Controller )何时更改属性。让每个 Controller (登录 Controller 除外)将自身添加为登录 Controller 属性的观察者。请记住让他们将自己移出 -dealloc
(或 -finalize
)方法。
为了发布正确的通知,所有内容都需要使用访问器或 mutableArrayValueForKey:
。这也适用于登录 Controller 本身——在改变数组时,它应该使用自己的访问器,而不是直接向数组发送消息。唯一的异常(exception)是 init
和dealloc
(因为访问器消息将是发送给半 init
ed/dealloc
ked 对象的消息,如果您让访问器变得奇特*,这将是一个问题。
顺便说一句,听起来您的 Controller 可能太多了。看看您是否无法将部分逻辑移至模型对象中。这极大地简化了您的代码,因为 Cocoa 被设计为与模型层一起使用。大量使用 Controller 就是与框架作斗争,这会为您带来更多工作。
*我所说的“花哨”是指做给定访问器方法的正常行为之外的事情。例如,insertObject:in<Foo>AtIndex:
通常只是尾调用 [<foo> insertObject:atIndex:]
;如果您将对象插入或存储在实例变量中数组之外的其他位置,或者如果您在同一方法中执行其他操作(例如告诉 View 需要显示),那么您的访问器方法就很奇特。 p>
关于cocoa - 将 NSMutableArray 传递给其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/661694/
在 viewDidLoad 上,我的应用程序填充 NSMutableArray arrayOfHaiku,它是 NSDictionary 项的数组,如下所示: NSError *error; NS
我在 NSMutableArray 上是这样的: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"0",@"0",@"0",@"0
我正在尝试设置我的 allArticlesArray 的内容,然后将附加对象附加到数组中。这是我的代码片段: [self.allArticlesArray setArray:newsArray]; [
我用 NSMutableArray 中的数据填充了 TableView ,一切正常。当我选择一个单元格(didSelectRowAtIndex)时,该项目将从数组中删除,正如它应该做的那样。现在我希望
我有一个 NSMutableArray 是我的代表,我也在我的一个 View Controller 中使用它。 所以在 viewDidLoad 我像这样制作我的 NSMutableArray 的可变副
我有 100 个元素的 NSMutableArray。 我想将“20 - 50”、“10 - 20”、“60 - 100”和 50 - 60. 元素加载到单独的 NSMutableArray 中,并将
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我在尝试将字符串的 NSMutableArray 共享给另一个类时遇到了一些问题。我有一个 tableView,其中填充了 Strings,我想将其添加到 NSMutableArray。然后在另一个
正如我们所知,数组是一个连续的内存分配。那么 NSMutableArray 大小将如何增加。 最佳答案 C 数组确实使用连续内存,C++ std::vector 也是如此,但是 NSMutableAr
我需要对一个数组进行排序,里面有一个数组,像这样: NSMutableArray * array_example = [[NSMutableArray alloc] init]; [array_e
这看起来很简单,但我只是得到一个空数组。 我想获取一个按下的按钮,找到它旁边的所有按钮(参见代码中的注释),并将所有找到的按钮添加到另一个 NSMutableArray。 然后我想遍历该数组并对每个按
我正在尝试在另一个 NSMutableArray 中添加 NSMutableArray。但我想做的是嵌套数组。 我当前的代码是: NSMutableArray *array1 = [NSMutab
我有三个类,即DepartmentViewController、DepartmentRequest、Department。这就像我从 DepartmentViewcontroller 发出部门请求,并
我正在尝试将 NSMutableArray 存储在 NSMutableArray 中。所以 var all:NSMutableArray = NSMutableArray() let localArr
这一定是那些错误之一,您一直盯着代码看很长时间,以至于找不到错误。 我有这个代码块,我在其中循环遍历一个包含多个 NSMutableArray 的 NSMutableArray: // FoodVi
我有一个包含 50 个条目的 NSMutableArray - 有什么简单的方法可以将其分成 5 个 NSMutableArray,每个 10 个条目。 最佳答案 是的,要划分 NSMutableAr
我想将 NSMutableArray 的 addObject 放入 NSMutableArray 中,那么我如何快速实现这一点。并检索它,所以请帮助我,因为现在我正在快速学习。 间接说我要二维数组是指
好吧: 我有 NSMutableArray 1 我还有 NSMutableArray 2 我想从数组 1 中删除与数组 2 中的对象匹配的所有对象。 有什么想法吗? 最佳答案 我刚刚打开文档,打印 N
我正在尝试制作 NSMutableArray 的深拷贝,其对象是与此类似的自定义类的实例: @interface CustomParent : NSObject @property NSInteger
我知道你们可能会觉得这是一个重复的问题。但我对我的项目的这个问题搞砸了。 现在转到这个问题,我已经采取了NSMutableArray命名为 arr1包含字符串值,例如 @"34" , @"40"等等。
我是一名优秀的程序员,十分优秀!