问题标签 [nsmutablecopying]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 这是实现 NSMutableCopying 的合理模式吗?
我正在寻找实现NSMutableCopying
接口,因为我有一组不可变的对象,但我还需要能够创建修改后的副本。假设我们有一个定义类似这样的电影(当然,真的会有更多的属性):
根据我的阅读,如果您需要在构造函数之外设置 ivars,就像我将在这里实现的那样NSCopying
,那么为它们定义私有 setter 是一种很好的做法。所以我最终会得到这样的实现BBMovie
(请注意,这些类型并非旨在允许子类化):
现在,鉴于我知道BBMovie
实现具有属性的 getter 和 setter,看来我应该能够BBMutableMovie
简单地实现:
这种方法有什么问题,和/或我遗漏了什么吗?
当然,我意识到 BBMovie 实现并不是真正不可变的,因为如果库的消费者发送它会响应设置的消息,但这对我来说并不是真正的问题,因为它不会带来安全风险并且会下降在图书馆的“正常”使用之外。
objective-c - 文字语法与 mutableCopy 和 Objective-C 编译器警告
我对 Python 的经验比其他任何东西都多,所以使用可变数组和不可变数组和字典有点奇怪。我真的很喜欢 Xcode 4.5 添加的文字语法,但是在做一些简单的事情时,我遇到了这样的情况:
并且编译器给了我一个警告,指出“myArray 可能无法响应 addObject”。
代码编译并且 addObject 工作得很好,我可以 NSLog 对象并验证它是否存在于 myArray - 但我不完全理解这个警告的性质。在这种情况下 mutableCopy 不会返回 NSMutableArray 吗?简单地使用 NSMutableArray 而不是尝试(过度)使用文字语法是否更合适?
另外,既然这只是一个愚蠢的警告,我可以忽略它并继续吗?这似乎……在最坏的情况下是懒惰的,也许只是为将来的恶作剧打开了大门。
iphone - MutableCopy AllocLeak MemoryLeak
我有一个每秒触发一次的 NSTimer。
每一秒我都有一个需要更改的 NSString 。
我以前从未尝试过处理内存管理,所以我不确定我所做的是否正确,但仪器在“alloc”下说stringByReplacingOccurrencesOfString
大约一分钟后代码行有 45MB 的“Live Bytes” ...
(并且实时字节数每秒都在增加,最终导致应用程序崩溃)。
我认为我的问题在于MutableCopy
代码的某个地方?
这是我的代码:
objective-c - 在自定义类上使用 -mutableCopyWithZone: 使其不可变
我创建了一个符合NSCopying
and的自定义类NSMutableCopying
。
-copyWithZone:
我已经为and添加了一个实现-mutableCopyWithZone:
,但是每当我调用-mutableCopy
我的对象并尝试调用另一个方法时,它就会崩溃,因为一些 ivars 已经变得不可变,即使我调用-mutableCopyWithZone:
了 ivars。
这是我复制课程的方式:
(代码在 上失败+flip:
,因为它试图在ivar上使用removeObjectAtIndex:
和)addObject:
NSMutableArray
这是我复制课程的方式:
我不确定它为什么会失败,但我真的不明白为什么它不生成array
和objects
可变。
任何帮助表示赞赏。
objective-c - mutableCopyWithZone 令人困惑的要求?
澄清:问题不在于可变与不可变,而是关于调用 super 创建正确类的实例。我没有想过[[self class] alloc]
在基类中使用,这似乎解决了我的问题。如果没有更好的结果,我会在接下来的几个小时内接受那个分析器:)
这很令人困惑。考虑
如果我遵循规范,我只是不明白这段代码怎么可能是正确的。
当调用[super mutableCopyWithZone: zone]
返回时,我期望基类只为其自己的 ivars 分配了足够的空间。它无法判断Derived
实例需要更多空间来容纳自己的 ivars。
文档的真正含义是什么?我应该如何实现这个?
ios - 如何正确实现 mutableCopyWithZone 和 copyWithZone
我读了其他一些关于它的主题,但我仍然迷路了。
我想创建 2 种对象,一种只有“只读”属性的不可变对象,一种只有“读写”属性的可变对象。
让我们称它们为 EXCar 和 EXMutableCar。
EXCar 是 NSObject 的子类,EXMutableCar 是 EXCar 的子类。
ExCar 将在其界面中
EXMutableCar 将在其界面中
因此,当我使用它的子类 EXMutableCar 时,我“打开”了 EXCar 的属性。然后它是可变的。问题是在它们之间正确复制。
我在 EXCar 中实现了 mutableCopyWithZone :
第一个问题,这是做这件事的好方法吗?(我要燕子副本)
问题在于copyWithZone。由于 EXCar 的属性是只读的,我既不能在 EXCar 中创建,也不能在 EXMutableCar 中创建 EXCar 的新实例并像这样填充其属性:
而且我真的不想做一个带有 15 个属性的“init”方法来传递(当然,EXCar 就是一个例子,真正的类充满了许多属性)。通常它们是从服务器的 JSON 消息启动的,因此它们不需要复杂的 init 方法。
第二个问题是这样,如何做一个让我的班级不可变的 copyWithZone ?
谢谢你的帮助 :)
ipad - 与修改 NSMutablearray 中的值相关的问题
我面临 NSMutablearray 中的值的问题。我有两个 NSMutablearray,两者都使用 mutablecopy 保存相同的内容。问题是当我修改一个数组中的值时,第二个数组中的相应值也会被修改。如何解决这个问题。请帮我。
objective-c - NSDictionary:MutableCopy 之后的比较
我有以下属性:
//这就是我复制字典的方式:
//在另一个类中我比较它们
我有断点设置。比较字典中的键/值是相同的,但编译器似乎以不同的方式看待它们,因为条件永远不会为真,使其位于大括号内并命中断点。
我通过 NSLog 验证了键/值,它们是相同的。我什至尝试了协议- (id)mutableCopyWithZone:(NSZone *)zone
并得到了相同的行为。
NSMutableDicitonary 的 mutableCopy 是否将其副本更改为不更改其任何内容的位置,您将其与源进行比较并且它不一样?我无法弄清楚我做错了什么!
ios - 为什么这个 NSMutableAttributedString addAttribute 只有在我使用 mutableCopy 时才有效
我有以下代码:
如您所见,我想将这Son
部分加粗。如果我执行上述语句,这不起作用,但只有在我这样做时才起作用:
这可能是什么原因?
ios - Objective C 中的可变副本有什么作用
在目标 C 中,与 C++ 语言相同,如果将对象分配给对象,它将获得其指向地址,如下所示:
因此,更改上述对象之一将影响另一个对象。
MutableCopy 也一样吗?复制和 MutableCopy 有什么区别?
如何做深拷贝?