代码之家  ›  专栏  ›  技术社区  ›  Andy Jazz

模型I/O如何使用`makeVerticesUniqueAndReturnError()`实例方法?

  •  0
  • Andy Jazz  · 技术社区  · 6 年前

    makeVerticesUnique() 修改了网格顶点缓冲区,以便没有顶点被多个面共享。但在macOS 10.13 High Sierra和iOS 11中,它被弃用:

    mdlMesh.makeVerticesUnique()            /* deprecated in macOS 10.13 and iOS 11 */
    

    func makeVerticesUniqueAndReturnError() throws
    

    但没有记录在案。 如何使用?

    enter image description here

    当我使用这个新的实例方法时,Xcode给了我一个错误:

    'throws' may only occur before '->'
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   rickster    6 年前

    如果在developer.apple.com或Xcode文档查看器中找不到文档,请检查框架标题或Swift接口,这些标题或接口通常有代码注释,至少可以作为一种粗略的文档形式。

    在Xcode中,快速使用Open(§O) 并键入有关标头的名称( MDLMesh.h MDLMesh, makeVerticesUnique, etc

    /*!
     @method makeVerticesUnique:
     @abstract Deindexes the vertex array
     @discussion If any vertices are shared on multiple faces, duplicate those
                 vertices so faces do not share vertices. The vertex buffer and index
                 buffers on submeshes may grow to accomadate any vertices added.
     */
    @available(OSX, introduced: 10.11, deprecated: 10.13)
    open func makeVerticesUnique()
    
    
    /*!
     @method makeVerticesUniqueAndReturnError:
     @abstract Deindexes the vertex array
     @discussion If any vertices are shared on multiple faces, duplicate those
     vertices so faces do not share vertices. The vertex buffer and index
     buffers on submeshes may grow to accomadate any vertices added.
     */
    @available(OSX 10.13, *)
    open func makeVerticesUniqueAndReturnError() throws
    

        2
  •  0
  •   Andy Jazz    6 年前

    这个新的 instance method 完美配合 try! 关键字:

    try! mdlMesh.makeVerticesUniqueAndReturnError()
    

    尝试! 在表达式之前,禁用错误传播并将调用包装在运行时断言中,以确保不会抛出任何错误。如果真的抛出了一个错误,我将得到一个运行时错误。