C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 有没有理由不返回一个不可预期的可变对象?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有许多类似于以下的功能
+ (NSArray *)arrayOfSomething
{
    NSMutableArray *array = [NSMutableArray array];

    // Add objects to the array

    return [[array copy] autorelease];
}

我的问题是关于这个方法的最后一行:返回可变对象并避免复制操作或返回不可变副本是否更好?是否有任何充分的理由避免返回一个不可预期的可变对象?

(我知道返回NSMutableArray是合法的,因为它是NSArray的子​​类.我的问题是这是否是一个好主意.)

解决方法

这是一个复杂的话题.我认为最好将您推荐给 object mutability的Apple指南.

关于使用内省来确定返回对象的可变性,Apple有这个说法:

(我的重点)

本文接着给出了几个很好的理由,说明为什么你不应该对返回的对象使用内省来确定你是否可以改变它,例如

鉴于上述情况,你可以完全接受在你的例子中返回可变数组(前提是,在返回之后你永远不会自己改变它,因为那样你就会违反合同).

如此,几乎没有人读过Cocoa Objects Guide的那一部分,所以防御性编程会要求你制作一个不可变的副本并返回,除非性能分析表明这是一个问题.

大佬总结

以上是大佬教程为你收集整理的objective-c – 有没有理由不返回一个不可预期的可变对象?全部内容,希望文章能够帮你解决objective-c – 有没有理由不返回一个不可预期的可变对象?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。