2

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

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

(1)我下载了本教程作者编写的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: ...

它没有打印任何东西。

为什么不调用这个方法???!!!以前从未遇到过这个问题。它真的很烦人。

4

1 回答 1

4

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

@property (strong, nonatomic) Flickr *flickr;

如果这样可以解决问题,那么问题是您的财产在您能够使用它之前就被释放了。您不会看到任何错误,因为“弱”属性可确保在对象被释放后将指针设置为 nil(并且 Objective-C 在向 nil 发送消息时不会抛出错误)。

于 2012-11-19T23:45:08.700 回答