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
170
Designer's and Engineer's Thinking Styles
ninjinkun
0
310
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
740
Other Decks in Technology
See All in Technology
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
130
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
0
370
Diagnosing performance problems without the guesswork
elenatanasoiu
0
170
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
3.1k
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
170
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
370
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
1
200
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.6k
AIプラットフォームを運用し続けるための可観測性
tanimuyk
4
1.1k
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
200
運用を見据えたAIエージェント設計実践
amacbee
1
3.2k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
350
Featured
See All Featured
Believing is Seeing
oripsolob
1
140
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Producing Creativity
orderedlist
PRO
348
40k
For a Future-Friendly Web
brad_frost
183
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
RailsConf 2023
tenderlove
30
1.5k
Un-Boring Meetings
codingconduct
0
310
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
The browser strikes back
jonoalderson
0
1.2k
30 Presentation Tips
portentint
PRO
1
320
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 ࣗલͷ࣮ࣺͯ·͠ΐ͏