Copy

在swift中,NSObject的子类可以使用copy方法来复制实例对象,做法如下:

子类必须声明并实现NSCopying协议;

子类实现copyWithZone:方法;

子类的构造方法init必须使用requried关键字修饰

示例代码:

class ClazzA:NSObject,NSCopying {

     var memberA = 0

     // 必须使用required关键字修饰

      required override init() {   

      }

      // 实现copyWithZone方法

      func copyWithZone(zone: NSZone)->AnyObject {

             let theCopyObj = self.dynamicType.init()        

             theCopyObj.memberA = self.memberA

             return theCopyObj    

      }

}



extension MTLCLFrame : NSCopying, NSMutableCopying {

    public func copy(with zone: NSZone? = nil) -> Any {

        let frame = MTLCLFrame()

        frame.currentSampleTime = self.currentSampleTime

        frame.orientation = self.orientation

        frame.sampleBuffer = self.sampleBuffer

        frame.image = self.image

        MTLog(message: self.image)

        MTLog(message: frame.image)

        frame.sourceType = self.sourceType

        frame.parameters = self.parameters

        return frame

    }

    public func mutableCopy(with zone: NSZone? = nil) -> Any {

        let frame = MTLCLFrame()

        frame.currentSampleTime = self.currentSampleTime

        frame.orientation = self.orientation

        frame.sampleBuffer = self.sampleBuffer

        frame.image = self.image

        frame.sourceType = self.sourceType

        frame.parameters = self.parameters

        return frame

    }

}

let currentFrame = frame.copy()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。