被叫方法无响应 - Xcode 4 / objective-C c

时间:2012-11-19 23:42:34

标签: iphone objective-c ios xcode ipad

我在调用已导入项目的外部文件中的方法时出现问题。这些方法由于某种原因没有被调用,即使项目编译正常。并且控制台中没有错误消息/输出。

有人可以帮忙吗?这是完整的问题:

(1)我下载了by the author of this tutorial写的Flickr API(4个文件)并拖放到Xcode文件管理器中,指定用我的项目复制和链接4个文件。

* Flickr.h
* Flickr.m
* FlickrPhoto.h
* FlickrPhoto.m

(2)在主视图控制器中,我首先导入外部文件

#import "Flickr.h"
#import "FlickrPhoto.h"

(3)然后我在@interface部分中定义了一个保存对象的属性:

@property (weak, nonatomic) Flickr *flickr;

(4)在viewDidLoad中,我分配了一个新的对象实例:

self.flickr = [[Flickr alloc] init];

(5)然后在后面的方法中,我调用API中的一个方法:

[self.flickr searchFlickrForTerm:textField.text completionBlock:^(...) { ... }];

然而,该方法没有被调用:我在此方法调用之前放置了一条NSLog行,并将其打印到控制台。我还在方法的第一行放了一个NSLog:

- (void)searchFlickrForTerm:(...) term completionBlock: ...

并且它没有打印任何东西。

为什么这个方法没被调用??? !!!从来没有遇到过这个问题。它真的很烦人。

1 个答案:

答案 0 :(得分:4)

尝试将您的属性更改为强而不是弱,并查看是否可以解决您的问题:

@property (strong, nonatomic) Flickr *flickr;

如果修复它,问题是您的属性在您能够使用它之前被解除分配。你不会看到任何错误,因为一个“弱”属性确保一旦对象被释放后指针被设置为nil(并且Objective-C在将消息发送到nil时不会抛出错误)。