關(guān)于 UIImageWriteToSavedPhotosAlbum 回調(diào)方法攜帶自定義參數(shù)

前言

UIImageWriteToSavedPhotosAlbum 是保存到相冊的方法。

// Adds a photo to the saved photos album.  The optional completionSelector should have the form:
//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
public func UIImageWriteToSavedPhotosAlbum(_ image: UIImage, _ completionTarget: Any?, _ completionSelector: Selector?, _ contextInfo: UnsafeMutableRawPointer?)

調(diào)用該方法時(shí)是執(zhí)行寫入操作寂嘉,但是成功與否并不能直接知道催训,需要定義一個(gè) selector 去讀取回調(diào)的數(shù)據(jù)霍转。
比如:

//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

但是這個(gè) selector 只能接受默認(rèn)的幾個(gè)參數(shù),image,error,contextInfo低匙,通過這個(gè) error 可以知道是否保存成功旷痕,但是如果想在這個(gè) selector 中做更多的文章是有點(diǎn)麻煩的。

分析

我們看到 UIImageWriteSavedPhotosAlbum 這個(gè)方法有幾個(gè)參數(shù)顽冶,image,completionTarget,completionSelector, contextInfo

image 即為需要保存的圖片测砂。
completionTarget安疗,為 selector 調(diào)用的對象
completionSelector 是接收改寫入操作的一些信息。
contextInfocompletionSelector 中的 contextInfo 是同一個(gè)對象,這里我們可以想點(diǎn)辦法宫蛆。

既然兩個(gè)一致脏嚷,那么我們可以傳入一些信息各淀。

開始

注意到 completionSelector 中的 contextInfo 為 (void*)妇穴,而另外一個(gè)為 UnsafeMutableRawPointer?,我們要統(tǒng)一一下拱燃。

先放出實(shí)現(xiàn):

ImageWritingContext

這個(gè)是即將傳入 selector 中的參數(shù)秉溉,用來處理其他的事情

class ImageWritingContext {
  var value: Int

  init(_ value: Int) {
    self.value = value
  }
}

保存圖片,并寫入?yún)?shù)

let context = ImageWritingContext(callback)
          UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.didFinishSavingImage(image:error:contextInfo:)), Unmanaged.passRetained(context).toOpaque())

處理參數(shù)

@objc func didFinishSavingImage(image: UIImage, error: NSError?, contextInfo: UnsafeRawPointer?) {
    guard let unmanagedImageWriting: Unmanaged<ImageWritingContext> = contextInfo.map(Unmanaged.fromOpaque) else {
      return
    }
    let imageWriting = unmanagedImageWriting.takeRetainedValue()
    let value = imageWriting.value

    guard let error = error else {
      print("Save imag succeed. value: \(value).")
      return
    }

    print("Save image failed with error \(error)")
  }

注意事項(xiàng)

調(diào)用 UIImageWriteToSavedPhotosAlbum 的類需要繼承自 NSObject碗誉,并且要在初始化方法中實(shí)現(xiàn) super.init()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末召嘶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哮缺,更是在濱河造成了極大的恐慌弄跌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尝苇,死亡現(xiàn)場離奇詭異铛只,居然都是意外死亡埠胖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門淳玩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來直撤,“玉大人,你說我怎么就攤上這事蜕着∧笔” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵承匣,是天一觀的道長蓖乘。 經(jīng)常有香客問我,道長悄雅,這世上最難降的妖魔是什么驱敲? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮宽闲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘握牧。我一直安慰自己容诬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布沿腰。 她就那樣靜靜地躺著览徒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颂龙。 梳的紋絲不亂的頭發(fā)上习蓬,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音措嵌,去河邊找鬼躲叼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛企巢,可吹牛的內(nèi)容都是我干的枫慷。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼浪规,長吁一口氣:“原來是場噩夢啊……” “哼或听!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笋婿,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤誉裆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缸濒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體足丢,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡元镀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霎桅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栖疑。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滔驶,靈堂內(nèi)的尸體忽然破棺而出遇革,到底是詐尸還是另有隱情,我是刑警寧澤揭糕,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布萝快,位于F島的核電站,受9級特大地震影響著角,放射性物質(zhì)發(fā)生泄漏揪漩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一吏口、第九天 我趴在偏房一處隱蔽的房頂上張望奄容。 院中可真熱鬧,春花似錦产徊、人聲如沸昂勒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戈盈。三九已至,卻和暖如春谆刨,著一層夾襖步出監(jiān)牢的瞬間塘娶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工痊夭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刁岸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓生兆,卻偏偏與公主長得像难捌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鸦难,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351