這些天在應(yīng)用中用到openssl編解碼的時候遇到用fopen打開文件拿不到FILE的情況乏冀,造成crash桅锄,最后得到解決劫哼,以下是記錄:
因?yàn)閼?yīng)用底層有部分代碼是C編寫的鲫尊,在這里要打開一個文件來讀取數(shù)據(jù),一開始在Objective-C中創(chuàng)建文件的時候是用的NSURL沦偎,傳到C代碼中的時候使用[[url absoluteString] UTF8String]疫向,在fopen的時候拿到的fd是-1,沒有打開文件豪嚎。
追蹤代碼的時候發(fā)現(xiàn)搔驼,NSURL指向的文件路徑是 file:///xxxx 這樣的格式,但如果是NSString指向的文件路徑就是 /file/xxxx侈询,在UNIX文件系統(tǒng)中肯定前者是無法定位到一個文件的舌涨,最后修改創(chuàng)建文件并獲取文件的方式為通過NSString來指向文件,千萬不能使用NSURL
文件放在Document和tmp下都不影響扔字。
以上是解決這次問題的收獲囊嘉,血的教訓(xùn)啊,花了30分鐘才發(fā)現(xiàn)革为。希望對看到的朋友有幫助扭粱。