Problem with UIImageWriteToSavedPhotosAlbum

Abierto
#109 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
ios, typescript
Área
mobile-dev

Línea de trabajo

Comienza reproduciendo la assertion de saveToAlbum en image-util.ios.ts con @nativescript/ios 7.2.0 y, a continuación, compara el mismo código de completionTarget de UIImageWriteToSavedPhotosAlbum con la versión 6.5.4. El issue se resuelve cuando el callback de finalización funciona sin la assertion de ClassBuilder en la versión más reciente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Hey there I encountered a problem when calling UIImageWriteToSavedPhotosAlbum with a completionTarget. This error does not appear if I use "@nativescript/ios": "6.5.4", instead of "@nativescript/ios": "7.2.0".

I also tried to use the Typescript Subclassing Syntax without any success.

Error:

====== Assertion failed ======
Native stack trace:
1          0x10f628630 tns::Assert(bool, v8::Isolate*) + 119
2          0x10f620d3d tns::ClassBuilder::GetTypeEncodingType(v8::Isolate*, v8::Local<v8::Value>) + 121
3          0x10f61eda7 tns::ClassBuilder::ExposeDynamicMethods(v8::Local<v8::Context>, objc_class*, v8::Local<v8::Value>, v8::Local<v8::Value>, v8::Local<v8::Object>) + 1069
4          0x10f61e93f tns::ClassBuilder::ExposeDynamicMembers(v8::Local<v8::Context>, objc_class*, v8::Local<v8::Object>, v8::Local<v8::Object>) + 219
5          0x10f61def5 tns::ClassBuilder::ExtendCallback(v8::FunctionCallbackInfo<v8::Value> const&) + 459
6          0x10f75fd2c v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) + 620
7          0x10f75f1dc v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 556
8          0x10f75e863 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 259
9          0x10fff7819 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit + 57
10         0x10ff90842 Builtins_InterpreterEntryTrampoline + 194
JavaScript stack trace:
at saveToAlbum (file: .../image-util.ios.ts:10:46)

Code Snippet:
This implementation is based on this post.

const CompletionTarget = (<any> NSObject).extend({
        'thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:': function (image, error, context) {
            if (error) {
                console.log("on error", error);
            }
        }
    }, {
        exposedMethods: {
            'thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:': {
                returns: interop.types.void,
                params: [UIImage, NSError, interop.Pointer]
            }
        }
    });
    const completionTarget = CompletionTarget.alloc().init();
    UIImageWriteToSavedPhotosAlbum(imageSource.ios, completionTarget,'thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:',null);

Calling UIImageWriteToSavedPhotosAlbum without a completionTarget works fine.
UIImageWriteToSavedPhotosAlbum(imageSource.ios, null, null, null);

Setup:

"dependencies": {
    "@angular/animations": "~11.2.7",
    "@angular/common": "~11.2.7",
    "@angular/compiler": "~11.2.7",
    "@angular/core": "~11.2.7",
    "@angular/forms": "~11.2.7",
    "@angular/platform-browser": "~11.2.7",
    "@angular/platform-browser-dynamic": "~11.2.7",
    "@angular/router": "~11.2.7",
    "@nativescript/angular": "~10.0.0",
    "@nativescript/core": "7.3.0",
    "@nativescript/unit-test-runner": "^1.0.2",
    "core-js": "3.9.0",
    "reflect-metadata": "~0.1.12",
    "rxjs": "^6.5.5",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.1102.6",
    "@angular/cli": "~11.2.6",
    "@angular/compiler-cli": "~11.2.7",
    "@nativescript/android": "7.0.1",
    "@nativescript/ios": "7.2.0",
    "@nativescript/types": "7.3.0",
    "@nativescript/webpack": "~3.0.0",
    "@ngtools/webpack": "~10.0.0",
    "@types/jasmine": "~3.6.0",
    "codelyzer": "^6.0.0",
    "karma": "6.3.1",
    "karma-jasmine": "~4.0.0",
    "karma-nativescript-launcher": "0.4.0",
    "karma-webpack": "3.0.5",
    "node-sass": "^4.7.1",
    "tslint": "~6.1.3",
    "typescript": "4.1.5"
  }
Lenguaje dominante
JavaScript
Estrellas
150
Forks
43
Merge medio
3 d 10 h
PR fusionados (30 d)
22

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NativeScript/ios

Todos los issues de NativeScript/ios

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.