Używam szkieletu XZINGObjC do tworzenia obrazu kodu kreskowego EAN. Po dokumentacji, robię to jakCel C: Jak przekonwertować CGImageRef na UIImageView?
//in viewDidAppear
//XZING: create Matrix
NSString* eanString = @"1234567890123"; //sth. like that
ZXBitMatrix* result = [writer encode:eanString
format:kBarcodeFormatEan13
width:500
height:500
error:&error];
if (result) {
//XZING: convert matrix to CGImageRef
CGImageRef imageRef = [[ZXImage imageWithMatrix:result] cgimage];
//CRASHLINE HERE!! (this is NOT in the XZING documentation, but i cannot figure out the issue!)
UIImage* uiImage = [[UIImage alloc] initWithCGImage:imageRef]; //<--CRASH: EXC_BAD_ACCESS
if(image != nil){
//assigning image to ui
self.barCodeImageView.image = uiImage;
}
To działa, jeśli mogę przejść przez ten kod przy użyciu punktów przerwania! Jednak myślę, że w pewnym momencie Obraz nie jest gotowy do użycia ?! Ale nie mogę znaleźć przyczyny.
Co próbowałem:
- użyciu
imageRef
iuiImage
jako zmienne lokalne (EXC_BAD_ACCESS CRASH) - próbował tej operacji w wątku tła (EXC_BAD_ACCESS CRASH)
samo tutaj, każde rozwiązanie działał, gdy użyłem punktów przerwania i krok po linii przez kod. Jaki jest mój błąd? Jakieś pomysły? Z góry dziękuję!
check to [link referencyjny] (http://stackoverflow.com/questions/12756295/uiimage-from-cgimageref). być może otrzymasz pomoc. – Pawan
Jeśli przechodzisz przez, jaka jest zawartość 'imageRef'? – Sulthan
@pawan: dziękuję, znalazłem, ale to nie rozwiązało mojego problemu @Sulthan: 'imageRef' nie jest zerowy, jeśli masz na myśli, że ... działa tak, jak powinien, jeśli używam punktów przerwania. Więc coś jest już wydane lub nie jest gotowe do użycia, ale nie wiem co dokładnie – longilong