代码之家  ›  专栏  ›  技术社区  ›  Stefan Arentz

nsurl是否应该分析无效的url?

  •  1
  • Stefan Arentz  · 技术社区  · 15 年前

    我在文件中找不到这个。

    我正在写一些单元测试,其中一个应该失败的测试是 [NSURL URLWithString: @"cow"] . 因为 cow 不是有效的URL。

    然而,它很高兴被 NSURL 完全没有错误。它不回来了 nil 它不会抛出异常。打电话 [url absoluteString] 在它上面把它变成 @"cow" .

    这是怎么回事?是 纽约州立大学 真的应该允许吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Chuck    15 年前

    nsurl允许相对的url,其中包括“cow”。

    RFC2396中给出的URI的一般形式允许相对引用:

    URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
    relativeURI   = ( net_path | abs_path | rel_path ) [ "?" query ]
    rel_path      = rel_segment [ abs_path ]
    rel_segment   = 1*( unreserved | escaped |
                          ";" | "@" | "&" | "=" | "+" | "$" | "," )
    

    除非我读错了,否则这意味着任何有效字符序列都可以形成有效的相对URL。

        2
  •  0
  •   Joshua Nozzi    15 年前

    从+urlwithstring的文档中:

    用于初始化的字符串 nsurl对象。必须符合RFC 2396。此方法根据RFC1738和1808解析Urlstring。 … 如果字符串格式不正确,则返回nil。

    我不太熟悉RFC2396,我不能肯定,但我认为您必须至少有一个协议和一个主机(即使域本身转发到主机)。我当然希望是零。

    如果你没有通过传递@“cow”得到“nil”,你应该在bugreporter.apple.com上提交一个bug。你可能想给它取名为“不要养牛”。