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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
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
750
Other Decks in Technology
See All in Technology
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
ハーレムエンジニアリング
kazuma777777
0
180
LanceDB入門
mocobeta
9
600
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
290
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
830
システム思考で問題に対処する
yussak
0
340
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
150
私がブラウザを自作したくなった理由
supurazako
1
270
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
200
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
470
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
2
450
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Darren the Foodie - Storyboard
khoart
PRO
3
3.7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
210
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Scaling GitHub
holman
464
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
640
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Spectacular Lies of Maps
axbom
PRO
1
930
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
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 ࣗલͷ࣮ࣺͯ·͠ΐ͏