考慮下面的代碼:如何強制一個未使用的變量成爲塊的一部分?
- (void)downloadObjectUsingURL: (NSURL *)url;
{
id file = [self createFileForURL: url];
Finalization objectFinalization = ^() {
// we don't access url here, but it would be handy to see it in the debugger
[file close];
}
id request = [self buildRequestFromURL: url];
[object download: request
toFile: file
finalization: objectFinalization];
}
什麼是強制url
被複製爲objectFinalization
的上下文的一部分最簡單的方法,複製並作爲objectFinalization
更容易調試的目的,一部分通過呢?
我可以想出幾個可能的答案,但他們沒有一個讓我感覺好。我可以做NSLog(@"%@",url)
,但是會導致噴出。我可以做一個NSAssert(url,...);
或if (url) {}
,但這兩個都沒有真正表達我想要做的事情。
我要繼續前進,只是接受這一點,因爲我認爲這是我會得到的最佳答案。但是我可能會爲此做一些宏:'#define FORCE(a)NSLog(@「%@」,a)'或'#define FORCE(a)' – 2011-05-16 18:45:22