Objective c 目标C中的零对象引用

Objective c 目标C中的零对象引用,objective-c,cocoa-touch,ios6,null,Objective C,Cocoa Touch,Ios6,Null,我从外部类调用一个类方法,以获取对象引用,在本例中是对UIImage的引用。我可以成功地调用它并从myOtherClass本身中获取它,但是当我从myClass调用该方法时,它总是返回nil @implementation myClass ... - (UIImage *) gethThumb: (UIImage *) originalImage { // always comes back nil: UIImage* thumb = [MyOtherClass makeT

我从外部类调用一个类方法,以获取对象引用,在本例中是对UIImage的引用。我可以成功地调用它并从
myOtherClass
本身中获取它,但是当我从
myClass
调用该方法时,它总是返回nil

@implementation myClass
...
- (UIImage *) gethThumb: (UIImage *) originalImage {

     // always comes back nil:
     UIImage* thumb = [MyOtherClass makeThumb: originalImage];
     return thumb;
}
...
@end

@implementation MyOtherClass

 ...
+ (UIImage*) makeThumb: (UIImage *) fullImage  {
    CGSize imageSize = [fullImage size];
    int shortestEdge = MIN(imageSize.width, imageSize.height);

    CGRect rect = CGRectMake((imageSize.width - shortestEdge)/2, (imageSize.height - shortestEdge)/2, shortestEdge, shortestEdge);
    CGImageRef imageRef = CGImageCreateWithImageInRect([fullImage CGImage], rect);
    UIImage *thumb = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef);

    CGSize thumbsize = CGSizeMake(180, 180);
    UIGraphicsBeginImageContext(thumbsize);
    [thumb drawInRect:CGRectMake(0, 0, thumbsize.width, thumbsize.height)];
    UIImage *scaledThumb = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();

    //scaledThumb is not nil here:
    return scaledThumb;
}
...
@end
我仔细查看了这个值,我可以看到它在makeThumb方法中指向一个有效的内存地址,但是一旦它返回了指向外部类的指针,内存地址突然变为0

我尝试将其作为实例方法编写,并实例化一个对象,然后使用

thumb = [self.myInstanceOfOtherClass makeThumb: originalImage];
以及更改方法以接受对象引用:

UIImage *thumbRef = nil;
thumb = [self.myInstanceOfOtherClass makeThumb: originalImage thumbRef:thumbRef];  
--在Myothers类中:

- (UIImage*) makeThumb: (UIImage *) fullImage thumbRef:(UIImage *) thumbRef {
    ...
    thumbRef = scaledThumb;
    ...
}
。。。我认为这可以防止ARC丢失对对象的引用(如果这里发生了这种情况)

我对目标C比较陌生,我希望有人能向我解释为什么会发生这种情况。对象是否在返回到外部类之前解除分配?我是否必须将它转换为外部类中的强属性,这样引用就不会被丢弃

忘了提及:引用指向的是从UIImagePickerControllerDelegate方法didFinishPickingMediaWithInfo中的相机图像引用创建的图像。在创建此拇指之前,相机视图将被取消。我想也许这就是我失去参考资料的原因


提前感谢您的帮助

您从未为映像分配内存。请执行以下操作:

UIImage *myimage =[ [ UIImage alloc] init].

#tumbleweeds,#crickets当我使用调试器逐步遍历代码时,返回值在设置时有一个有效的地址,但调试器会转到右括号,然后反弹回返回值,此时在控制台视图中可以看到该值被设置为0x00000000,然后才实际返回到调用方法。我相信ARC正在这样做,我不知道如何解决它。它甚至将另一个类发送的thumbRef的引用设置为0;然后查看它是否仍然为nil。否则,请尝试执行uu strong UIImage*scaledThumb=…当它离开makeThumb方法时为nil,但在调用代码中查看它时,它有一个内存地址。