Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SDWebImageを1年半使ってみた
Search
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
320
Launchable Webinar テストを効率化して生産性を上げる方法
ninjinkun
2
610
ディープリンクの 設計と実装 - iOSDC2017
ninjinkun
18
11k
スマートフォンアプリ開発における共創的な開発チーム
ninjinkun
61
19k
ReSwiftでアプリの状態管理 / Reactive Swift Meetup
ninjinkun
9
17k
フリルのアプリ開発今昔物語
ninjinkun
3
2.3k
プロトタイピング合宿によるデザインリニューアル
ninjinkun
1
3.1k
デザイナーが仕事をしやすいアプリエンジニアを考える
ninjinkun
4
750
Other Decks in Technology
See All in Technology
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
270
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
サイバー捜査員研修(後半)
nomizone
1
690
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
4
1.2k
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
150
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
3
320
Pavlokで始める電撃駆動開発
sgrsn
0
170
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
320
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.6k
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
200
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
330
JavaScript 研修 (2026)
recruitengineers
PRO
0
310
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
610
Leo the Paperboy
mayatellez
8
2.1k
Google's AI Overviews - The New Search
badams
0
1.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
420
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Producing Creativity
orderedlist
PRO
348
40k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
190
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 ࣗલͷ࣮ࣺͯ·͠ΐ͏