2016-09-14 4 views
0

リアクションネイティブのiosアプリケーションで素早いネイティブモジュールを使用して、アセットのURLからアニメーションgifを生成します。それは最初の試みでも働いているが、私はコンポーネントを脱出し、新しい資産を渡すとき、それは時々、このエラー表示、一度アプリのクラッシュを使用した後:ネイティブ/スウィフトネイティブモジュールに一度だけ反応する

が反応をエラー:

react error

または時々 Xcodeは_INSTANCEを返すようにすることを私に言って、この目的-C関数に私をリダイレクトする価値がない:ここでは

objective-c error

は、私は私のREACで私のネイティブモジュールを呼び出す方法です

@interface RCT_EXTERN_MODULE(GifGenerator, NSObject) 

RCT_EXTERN_METHOD(initFunction:(NSArray *)images 
        callback:(RCTResponseSenderBlock)callback); 

@end 

そして、私の迅速なクラスの重要項目の一部:

func initFunction(images : [String], callback: (NSObject) ->()){ 

self.standardImages = images 

return getImages(images, handler: self.generationCallback , someCallback: callback) 
} 

... 
(getImages call generate passing the callback function to it) 
... 

func generate(mainHandler: (NSObject) ->()) -> Void { 

... 
(movie to gif generation using AVAssetWriter) 
... 

videoWriter.finishWritingWithCompletionHandler {() -> Void in 
     if error == nil { 

      let resultUrl = self.videoToGif(videoOutputURL) 
      let ImageData = NSData(contentsOfURL: resultUrl) 
      let imageBase64:String =   ImageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 
      mainHandler([["url": imageBase64], ["error": "non"]]) 

      if let data = NSData(contentsOfURL: resultUrl) { 
       let image = UIImage(data: data) 
       UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil); 
      } 

     } 

彼らはの重要な一部であるT成分:私はGifGenerator.mに私の迅速なモジュールをエクスポートする方法

callImages: function(){ 
var that = this 
const imagesUri = this.parseImages(); 
var promise = new Promise(function(resolve, reject) { 
    NativeModules.GifGenerator.initFunction(imagesUri, resolve) 
}); 

promise.then(function(o) { 
    base64 = "data:image/gif;base64,"+o.url 
    imagesUri.push(base64); 
    that.setState({images: imagesUri}); 
}); 
} 

私のコードですが、必要に応じて詳細を表示できます

答えて

0

私の推測では毎回コールバックをリセットする必要がありますあなたのjsコールバックメソッドの警官で、すぐにあなたのjs cbを登録し直してください。