Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SDWebImageを1年半使ってみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ninjinkun
April 09, 2014
Technology
14k
25
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SDWebImageを1年半使ってみた
SDWebImageのTipsです
ninjinkun
April 09, 2014
More Decks by ninjinkun
See All by ninjinkun
買収から2ヶ月でシステム統合した話
ninjinkun
0
180
Designer's and Engineer's Thinking Styles
ninjinkun
0
330
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
620
ディープリンクの 設計と実装 - iOSDC2017
ninjinkun
18
11k
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
19k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
17k
フリルのアプリ開発今昔物語
ninjinkun
3
2.3k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3.2k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
760
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
490
自作バイナリを動かす「入口」8選
puhitaku
1
1.2k
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
240
FOSS4Gを活用した自治体業務DXの試み
470715
0
140
メルペイ 会計システム概要と歴史
mewuto
0
200
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
120
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
160
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
160
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
SREでアラート疲れを 解決しよう!
kairim0
1
220
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
A better future with KSS
kneath
240
18k
Exploring anti-patterns in Rails
aemeredith
4
530
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
320
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
930
Abbi's Birthday
coloredviolet
4
10k
The Limits of Empathy - UXLibs8
cassininazir
2
710
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Visualization
eitanlees
153
17k
Transcript
4%8FC*NBHFΛ ͬͯΈͨ OJOKJOLVO
4%8FC*NBHF w 8FCը૾ϩʔμʔ w ը૾Ωϟογϡ w 6**NBHF֦ு w Ξχ(*' 8FC1
IUUQHJUIVCDPNSTTEXFCJNBHF
4%8FC*NBHF w ͜ͷ͘Β͍ͰଟͷϓϩδΣΫτʹೖͯ͠ ͳ͠ w ը૾ϑΣονϟʔͷܾఆ൛ͱݴ͑Δ w ྑ͘ϝϯς͞Ε͍ͯͯ։ൃ׆ൃ
4%*NBHF$BDIF w σϑΥϧτઃఆ͕͍͚ͯΔ w σΟεΫΩϟογϡͷσϑΥϧτ&YQJSFिؒ w ϝϞϦΩϟογϡͷσϑΥϧτ্ݶͳ͠ w .FNPSZ8BSOJOH࣌ʹϝϞϦΩϟογϡফ͑Δ w
σΟεΫΩϟογϡΞϓϦͷऴྃ࣌ͱόοΫάϥϯυҠ ߦ࣌ʹআ͞ΕΔ w ͜ͷลΓࣗલͰ࣮͢ΔͱۭؾಡΉͷ͕େม
(*'BOJNBUJPO 8FC1αϙʔτ w 6**NBHFΞχ(*' 8FC1ͷมؚ͕·Ε͍ͯΔ w 6**NBHFϑΥʔϚοτʹඇґଘ w 4%8FC*NBHFೖΕΔ͚ͩͰΞχ(*'͑Δ w
ը૾μϯϩʔμʔͷҬΛ͍͑ͯΔʜ w ͚Ͳ࣮͕ࣗવͳײ͡ͳͷͰจ۟ͳ͍
ը૾ΛϑΣʔυͯ͠ද͍ࣔͤͨ͞ w σϑΥϧτͰը૾͕ͺͬͱදࣔ͞ΕΔ͚ͩ w DPNQMFUFE#MPDLΛ͏ __weak UIImageView *weakImageView = imageView;
! [imageView setImageWithURL:imageURL placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { if (cacheType != SDImageCacheTypeMemory) { [UIView transitionWithView:weakImageView duration:0.28 options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:nil completion:nil]; } }];
ಡΈࠐΈʹࣦഊͨ݁͠Ռ͕ Ωϟογϡ͞Εͯ͠·͏ w 4%8FC*NBHF3FUSZ'BJMFEΛࢦఆ͢Δ w 6*5BCMF7JFX$FMMͰҰؾʹը૾Λಡ Ή߹େ͚ͯΔ [imageView setImageWithURL:imageURL
placeholderImage:nil options:SDWebImageRetryFailed];
ϩʔΧϧͷը૾Λ63-ͰҾ͖ճ͢ w ΧϝϥɺϥΠϒϥϦ͔ΒબΜͩࣸਅʹ63-Λ༩ w 4%*NBHF$BDIFʹೖΕΔ w ϑΝΠϧ͕ظݶ͖Ͱอଘ͞ΕΔ - (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *editedImage = (UIImage *)info[UIImagePickerControllerEditedImage]; ! NSString *uuid = [[NSUUID UUID] UUIDString]; NSString *imageURLString = [NSString stringWithFormat:@"njkimage://images/%@.jpg", uuid]; ! [[SDImageCache sharedImageCache] storeImage:editedImage forKey:imageURLString]; ɹɹ// ͜ͷ imageURLString ΛҾ͖ճͤͲ͜Ͱը૾͕ಘΒΕΔ! }
ϩʔΧϧͷը૾Λ63-ͰҾ͖ճ͢ w .FNPSZ8BSOJOH࣌ʹղ์͢Δ͜ͱ͕ՄೳʹͳΔ w ඞཁʹͳͬͨΒ·ͨGFUDI͢ΕσΟεΫ͔Β෮ ݩ͞ΕΔ w ը૾Λෳબͯ͠Ξοϓϩʔυ͢Δ߹ʹ ϝϞϦރׇΛ͛Δ
ϩʔΧϧͷը૾Λ63-ͰҾ͖ճ͢ w 6**NBHF7JFX 8FC$BDIFͰදࣔͰ͖Δ w ϩʔΧϧσʔλͷ֬ೝը໘ͱ8FCͷσʔλΛදࣔ ͢Δը໘Λڞ௨ԽͰ͖Δ
.81IPUP#SPXTFS w ը૾ϑϧεΫϦʔϯදࣔϥΠϒϥϦ w ෦Ͱ4%8FC*NBHFΛ͍ͬͯΔ w 4%*NBHF$BDIF͕ڞ༻͞ΕΔ w લͷը໘Ͱ։͍͍ͯͨը૾ΩϟογϡΛ࠶ར༻Ͱ͖Δ
'BTU*NBHF$BDIF w 1BUI͕࡞ͬͨߴͳը૾දࣔΛ࣮ݱ͢ΔϥΠϒϥϦ w ࣄલʹ࠷దԽͨ͠ը૾Λ࡞ͬͯΩϟογϡ w ΧϦΧϦʹνϡʔχϯά͞Εͨը૾ද͕ࣔՄೳ w νϡʔχϯά෦Λ൚༻Խ͍ͯ͠ΔͨΊ"1*ෳࡶ w
εϖοΫͰେ͖ͳࣸਅΛ͵Δ͵Δಈ͔͍ͨ͠ ͳΒݕ౼͢ΔՁ͋Γ
'BTU*NBHF$BDIF w 8FC͔Βͷμϯϩʔυػೳ͍͍ͯͳ͍ w ͜͜Λ4%8FC*NBHFʹͤΔ - (void)imageCache:(FICImageCache *)imageCache wantsSourceImageForEntity:(id <FICEntity>)entity
withFormatName:(NSString *)formatName completionBlock: (FICImageRequestCompletionBlock)completionBlock { if ([entity respondsToSelector:@selector(URL)]) { NSURL *URL = [entity performSelector:@selector(URL)]; [[SDWebImageManager sharedManager] downloadWithURL:URL options:SDWebImageRetryFailed progress:nil completed: ^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) { completionBlock(image); }]; } }
'BTU*NBHF$BDIF w ͦͷ··ͩͱॏΩϟογϡʹͳΔ w ଞͰ͍ճ͞ͳ͍ͳΒ4%*NBHF$BDIFΘͳ͍ Α͏ʹ͢Δ 4%*NBHF$BDIF 'BTU*NBHF$BDIF 4%*NBHF.BOBHFS
·ͱΊ w 4%8FC*NBHF࠷ߴ w ࣗલͷ࣮ࣺͯ·͠ΐ͏