你有一个使用模型/服务类的类或 ViewController,如下所示:
@interface MainViewController : UIViewController <TweetServiceDelegate> {
NSArray *_tweets;
}
@property (nonatomic, strong) TweetService *tweetService;
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.twitterService queryForLatestTweets];
}
// delegate methods the tweetservice calls back after async getting data
- (void)querySucceededWithTweets:(NSArray *)tweets {
_tweets = [tweets copy];
}
@end
我问的原因是因为服务对委托的引用很弱,也就是 ViewController。
所以我知道使用 ARC 你不希望两个相互使用的东西都有一个强引用,所以如果它很弱但 ViewController 保留了 NSArray,那么一旦超出范围,服务就不会被收集,假设该服务确实超出了范围,但 ViewController 没有
@interface TweetService
@property (nonatomic, weak) id<TweetServiceDelegate> delegate;
@end
@implementation TweetService
- (void)queryForLatestTweets {
// do the query with AFNetworking, when succeed block fires, call the delegate
[self.delegate querySucceededWithTweets:arrayOfTweets];
}
@end