iPhone の URL から画像を読み込みます(サイズが小さい場合のみ)
-
19-09-2019 - |
質問
使っています URLのコンテンツを使用して初期化 の NSデータ URL から画像をロードします。ただし、画像のサイズが事前にわからないため、応答が一定のサイズを超えた場合に接続が停止または失敗するようにしたいと考えています。
これを行う方法はありますか iPhone 3.0?
前もって感謝します。
解決
ただし、NSData経由で直接実行することはできません NSURL接続 画像を非同期にロードして使用することで、そのようなことをサポートします 接続:didReceiveData: 受信したデータ量を確認します。制限を超えた場合は、送信してください キャンセル NSURLConnection にメッセージを送信してリクエストを停止します。
簡単な例:(receivedData はヘッダーで NSMutableData として定義されます)
@implementation TestConnection
- (id)init {
[self loadURL:[NSURL URLWithString:@"http://stackoverflow.com/content/img/so/logo.png"]];
return self;
}
- (BOOL)loadURL:(NSURL *)inURL {
NSURLRequest *request = [NSURLRequest requestWithURL:inURL];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
if (conn) {
receivedData = [[NSMutableData data] retain];
} else {
return FALSE;
}
return TRUE;
}
- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data {
[receivedData appendData:data];
if ([receivedData length] > 5120) { //5KB
[conn cancel];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)conn {
// do something with the data
NSLog(@"Succeeded! Received %d bytes of data", [receivedData length]);
[receivedData release];
}
@end
所属していません StackOverflow