【问题标题】:Runtime or compile time error for type check in Objective CObjective C 中类型检查的运行时或编译时错误
【发布时间】:2014-10-08 04:34:08
【问题描述】:

目前在我们的 SDK 中,我们允许用户在用户记录上设置键/值信息,该信息只能是日期、字符串或数字。我们创建了一个我们称之为 Attribute 的协议,我们扩展(类别)NSString 和 NSDate 并将其确认到协议中。所以现在在我们设置这些属性的方法中,我们要求一个值参数来确认 Attribute 协议。这将帮助我们进行编译时检查,但我想知道是否有必要由于 Objective C 的动态特性(我是一名 Java 开发人员),如果值不是 NSString NSDate 或NS 号码?

【问题讨论】:

  • 在编程车间检测到编译时错误。不一定是运行时错误。
  • (或者,正如我所知道的那样:让客户进行测试——他们通常是这样的 PITA,他们不妨做一些有用的事情 . 我不知道它们还有什么用处!)
  • 应用程序可能会正常失败。只是想知道 ObjC 开发人员的最佳实践是什么?
  • 从您的描述中不清楚您在类别中检查什么,或者它是如何进行编译时检查的。从根本上讲,听起来您实际上是在指定一个类/结构并为其分配参数,而不是例如将参数放在字典中。这确实可以确保数据类型正确,参数拼写正确等。这对您来说有多重要取决于您来判断——“严格性”和“灵活性”之间总是存在权衡,这会影响编码成本和错误率,而且并不总是以可预测的方式。

标签: objective-c categories


【解决方案1】:

决定取决于应用程序对错误数据的行为。 如果发布时数据错误,则无需出错,您应该检查值并进行转换,例如当用户键入此数据时将 int 转换为 NSNumber,而不是在所有操作之后。 这是你的选择,你会强烈引导一个到另一个还是检查 if(error) 等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2016-10-04
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多