gpt4 book ai didi

iphone - Objective-C 属性 setter 如何发出失败信号?

转载 作者:太空狗 更新时间:2023-10-30 03:26:23 26 4
gpt4 key购买 nike

假设您有一个具有复制语义的属性。如果复制方法失败,你应该在setter中做什么? (我认为这是可能的,因为副本通常以 alloc/init 组合开始,它可能会失败并返回 nil。)Apple 建议返回错误代码而不是使用异常,但 setter 通常具有 void 返回类型。推荐的方法是什么?您如何发出错误信号?

最佳答案

Apple 的建议实际上是异常(exception)情况应保留。无论如何,这有时是一种推荐的编程实践,但在 Objective-C 的情况下,由于异常处理的成本较高而得到加强。

所以如果你愿意,你可以抛出一个异常,这是合适的,例如内存不足(复制失败)是(希望!)异常(exception)情况。

也就是说,一些编程实践还建议属性不应抛出异常;通常基于看起来像赋值的东西 obj.property = value; 如果抛出异常会令人困惑(不像 [obj setProperty:value])。

这样我们就可以将类型的属性设置为“零”(nil, 0, 0.0, 等)。

返回错误的详细信息记录错误的详细信息,可以在检测到“零”后查询。这本质上是底层(“Unix”)系统调用和许多库函数使用的方法,在返回“零”之前设置了 errno

关于iphone - Objective-C 属性 setter 如何发出失败信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com