WEBVTT

00:00:00.000 --> 00:00:01.680
>> Bu haftanın
Xamarin Göster nerede

00:00:01.680 --> 00:00:03.360
benim iyi arkadaşım Alexi konuşma

00:00:03.360 --> 00:00:06.810
için bellek yönetimi hakkında
uygulamalarınız. O zaman dinle.

00:00:06.810 --> 00:00:13.200
[MÜZİk]

00:00:13.200 --> 00:00:14.280
Tekrar hoş geldiniz, millet,

00:00:14.280 --> 00:00:15.405
Xamarin Show için.

00:00:15.405 --> 00:00:16.650
Ben ev sahibiniz James Montemagno.

00:00:16.650 --> 00:00:17.820
Bugün, en iyi arkadaşım.

00:00:17.820 --> 00:00:21.270
ile tüm dünya Alexi
Beni. Nasıl gidiyor, dostum?

00:00:21.270 --> 00:00:22.905
Ben iyiyim. Ya sen?

00:00:22.905 --> 00:00:24.960
Harika yapıyorum.
Güzel bir gün.

00:00:24.960 --> 00:00:26.640
Burada, Redmond, Washington'da her gün.

00:00:26.640 --> 00:00:27.325
Öyle.

00:00:27.325 --> 00:00:29.085
Artık cep telefonumuzdan geliyorsun.

00:00:29.085 --> 00:00:31.065
müşteri danışmanlığı
takım, bu doğru mu?

00:00:31.065 --> 00:00:31.920
Bu doğru.

00:00:31.920 --> 00:00:33.450
Peki bu ne anlama geliyor?

00:00:33.450 --> 00:00:35.370
Bu, birlikte çalıştığımız anlamına gelir.

00:00:35.370 --> 00:00:38.250
müşterilerimiz ve biz
açıkça onlara tavsiye.

00:00:38.250 --> 00:00:41.645
Ama çoğunlukla, biz geliştiriciler ile çalışmak
ve araçları nasıl kullandıklarını görmek,

00:00:41.645 --> 00:00:44.300
Xamarin aracımızla nasıl çalıştıklarını,

00:00:44.300 --> 00:00:47.560
ve ortak nelerdir
ile karşı karşıya oldukları tuzaklar.

00:00:47.560 --> 00:00:48.420
Mükemmel.

00:00:48.420 --> 00:00:50.205
Bugün, hakkında konuşmak istiyorum

00:00:50.205 --> 00:00:52.355
bunlardan biri bellek yönetimidir.

00:00:52.355 --> 00:00:53.780
Seni yakaladım. Evet. Bu çok önemli.

00:00:53.780 --> 00:00:55.730
çünkü sık sık konuşuruz.
tüm serin hakkında,

00:00:55.730 --> 00:00:57.155
yapabileceğiniz fantezi özellikleri,

00:00:57.155 --> 00:01:00.440
ama biz bu istedim
en iyi uygulamalar serisi

00:01:00.440 --> 00:01:02.340
Çünkü başın belaya girer.

00:01:02.340 --> 00:01:03.820
Böyle şeyler olur. Bunu yapmak çok kolay.

00:01:03.820 --> 00:01:06.345
Bellek yönetimi,
Dürüst olmak gerekirse, ben bir noob'um.

00:01:06.345 --> 00:01:07.770
Gerçekten bilmiyorum. Ben sadece,

00:01:07.770 --> 00:01:09.560
"Öldürecekler.
beş saniye içinde benim uygulama.

00:01:09.560 --> 00:01:11.705
Fark etmez, değil mi?" Ama
Bu şekilde düşünmemeliyim.

00:01:11.705 --> 00:01:14.210
Bu doğru. Gördüğümüz bu.

00:01:14.210 --> 00:01:16.850
çünkü kimsenin umurunda değil.
bellek yönetimi.

00:01:16.850 --> 00:01:21.300
Çok fazla hafızamız var.
ve onları hiç kontrol etmedin.

00:01:21.300 --> 00:01:24.750
Yani, en son ne zaman oldu?
uygulama bellek kullanımınızı kontrol?

00:01:24.750 --> 00:01:26.250
En son kaza yaptığımda.

00:01:26.250 --> 00:01:29.510
Aslında, ben çok vardı
bunun iyi bir örneği.

00:01:29.510 --> 00:01:31.910
Sana şunu söyleyeyim. Bu
gerçek dünya örneğidir.

00:01:31.910 --> 00:01:35.120
Xamarin Essentials'da bir böcek var.

00:01:35.120 --> 00:01:38.375
aradığım zaman diyor ki
bu yöntem 20.000 kez,

00:01:38.375 --> 00:01:41.570
benim uygulama çöküyor ve
çünkü ben değildim

00:01:41.570 --> 00:01:45.155
düzgün bir atılması
yerli Android nesnesi,

00:01:45.155 --> 00:01:46.775
bir pencere, bir ekran.

00:01:46.775 --> 00:01:48.170
Yani olan şu:

00:01:48.170 --> 00:01:50.480
Onu yaratmaya devam ederdim.
ve asla

00:01:50.480 --> 00:01:53.135
çöp hiç toplanan çünkü
Onu asla atmadım.

00:01:53.135 --> 00:01:54.890
Biz de bunu yapıyoruz.
Bugün hakkında konuşmak için.

00:01:54.890 --> 00:01:56.925
Evet, evet. Harika. Hadi yapalım.
bu kadar. Bizim için ne var?

00:01:56.925 --> 00:02:00.435
Bu yüzden bu küçük
iki pencereli basit uygulama,

00:02:00.435 --> 00:02:02.745
ana ekran ve detay ekranı.

00:02:02.745 --> 00:02:06.375
Bu çok yaygın bir model.
UI navigasyon denetleyicisi.

00:02:06.375 --> 00:02:09.600
Bu sade bir Xamarin.
iOS uygulaması, değil mi?

00:02:09.600 --> 00:02:10.305
Tamam, tamam.

00:02:10.305 --> 00:02:12.440
>> Ne gidiyoruz
yapmak için tanıtmaktır

00:02:12.440 --> 00:02:14.930
bellek sızıntıları birçok,
birçok farklı şekilde.

00:02:14.930 --> 00:02:19.025
Ama önce, konuşmak istiyorum.
yerli dünyadan farklılıklar

00:02:19.025 --> 00:02:23.960
ve yönetilen dünya
performans ve bellek.

00:02:23.960 --> 00:02:25.340
Bu yüzden ne zaman bir işlemin olursa,

00:02:25.340 --> 00:02:27.995
veren işletim sistemi
Bir hafıza parçası.

00:02:27.995 --> 00:02:31.370
Bunun farkında olmalısın.
Çünkü hafızan tükendiğinde,

00:02:31.370 --> 00:02:33.670
uygulamanız çöküyor veya
işletim sistemi onu öldürür.

00:02:33.670 --> 00:02:35.355
Yönetilen bellekte,

00:02:35.355 --> 00:02:40.260
bizim Xamarin Mono bu alma
Bu belleğin küçük bir parçası.

00:02:40.260 --> 00:02:41.630
İşte o zaman.

00:02:41.630 --> 00:02:43.670
nasıl hakkında ihtiyatlı
bu parçayı da kullan.

00:02:43.670 --> 00:02:44.030
Tamam, tamam.

00:02:44.030 --> 00:02:46.640
Bu yüzden hala olmalıdır
yerli bellek hakkında farkında,

00:02:46.640 --> 00:02:48.905
Ve şimdi bir kez Xamarin ile çalışmak,

00:02:48.905 --> 00:02:50.320
ayrıca yönetim kısmı hakkında farkında.

00:02:50.320 --> 00:02:52.740
Anladım. Bu yüzden var
yerli bellek, iOS,

00:02:52.740 --> 00:02:55.980
Android bit ve parçaları,
.NET yönetilen bellek?

00:02:55.980 --> 00:02:56.640
Bu doğru.

00:02:56.640 --> 00:02:57.090
Mükemmel.

00:02:57.090 --> 00:03:00.530
>> Bir nesne oluşturduğunuzda
ve siz, diyelim ki,

00:03:00.530 --> 00:03:02.330
bir UI düğmesi, aslında oluşturmak

00:03:02.330 --> 00:03:04.950
yerli bir UI düğmesi ve
yönetilen UI düğmesi sınıfı.

00:03:04.950 --> 00:03:06.680
Farklı hafıza etkileri var.

00:03:06.680 --> 00:03:10.310
Farklı bir neden olabilir.
bellek sorunları var çünkü

00:03:10.310 --> 00:03:14.135
ayrıca toplamak için doğal bir yol
çöp ve yönetilen bir şekilde.

00:03:14.135 --> 00:03:20.385
Mono'da Mono tek
nesil çöp toplayıcı.

00:03:20.385 --> 00:03:23.460
Yerel dünyada, iOS ARC,

00:03:23.460 --> 00:03:26.680
Android kendi kullanın
çöp toplayıcı,

00:03:26.680 --> 00:03:29.420
ama birlikte çalışmalıdırlar.
yan yana ve biz gerekir

00:03:29.420 --> 00:03:32.300
onları var çünkü yapabilirsiniz
kullanarak sorunları tanıtmak.

00:03:32.300 --> 00:03:32.690
Anladım.

00:03:32.690 --> 00:03:34.640
Yani ilk ve

00:03:34.640 --> 00:03:36.950
tanıtmak için en basit yaklaşım

00:03:36.950 --> 00:03:40.830
bellek sorunları bir aboneliktir
abonelik olmadan.

00:03:42.040 --> 00:03:45.680
Çöp toplayıcı bilmeli
bir çöp olduğunda.

00:03:45.680 --> 00:03:47.180
Ama nasıl bilebilir ki?

00:03:47.180 --> 00:03:49.565
Bu inşa etmek gerekir

00:03:49.565 --> 00:03:53.915
ulaşılabilirlik ağacı grafiği
ve rotalardan başlar.

00:03:53.915 --> 00:03:57.320
Statik olaylarımız, statik değişkenlerimiz,

00:03:57.320 --> 00:03:59.350
statik olaylar veya iş parçacığı rulo çağrıları,

00:03:59.350 --> 00:04:01.910
hepsi ulaşılabilir rotalar ve

00:04:01.910 --> 00:04:05.005
çöp toplayıcı davranır
çöp olarak değil.

00:04:05.005 --> 00:04:06.810
Bu yüzden ne zaman böyle abone olsan,

00:04:06.810 --> 00:04:09.560
bağlantı eklentisi alalım.

00:04:09.560 --> 00:04:11.960
Biliyorum James.
bu eklenti aşina.

00:04:11.960 --> 00:04:13.400
Öyleyim. Evet. Hem de çok.

00:04:13.400 --> 00:04:14.960
Bu hoşuma oldu. Inç
Burada, biz sadece neyiz?

00:04:14.960 --> 00:04:16.220
Bir etkinliğe abone olmak,

00:04:16.220 --> 00:04:18.610
ve herhangi bir olabilir
tıklama olayı gibi olaylar,

00:04:18.610 --> 00:04:20.360
bir sensör değiştirme olayı var.

00:04:20.360 --> 00:04:22.715
Temel olarak, .NET'te herhangi bir şey.

00:04:22.715 --> 00:04:25.970
Evet, evet. Bu özel bir şey.
Sadece Xamarin'e değil.

00:04:25.970 --> 00:04:27.830
Herhangi bir statik olay.

00:04:27.830 --> 00:04:31.745
içinde .NET ve bağlantı
Burada sadece bir örnektir.

00:04:31.745 --> 00:04:35.390
Söylemeye çalıştığım şey, o.
herhangi bir statik olay veya olabilir

00:04:35.390 --> 00:04:38.960
herhangi bir singleton sağlanan olay.

00:04:38.960 --> 00:04:40.880
Ne zaman böyle abone olsak,

00:04:40.880 --> 00:04:42.520
ve diyelim ki biz var

00:04:42.520 --> 00:04:47.100
bu küçük parça
BağlantıDeğiştirildi işleyicisi.

00:04:47.100 --> 00:04:49.655
Küçük bir hafıza sızıntısı sıyoruz.

00:04:49.655 --> 00:04:54.290
Küçük çünkü bizim görüşümüz
oldukça basit ve hafif,

00:04:54.290 --> 00:04:55.400
Ama bu bir hafıza sızıntısı.

00:04:55.400 --> 00:04:57.685
Yani bu bir hafıza kaçağı, neden?

00:04:57.685 --> 00:05:00.860
>> Çünkü bu bağlantı ve

00:05:00.860 --> 00:05:03.830
BağlantıDeğiştirilen olay
statik bir başvurudur

00:05:03.830 --> 00:05:05.270
Çöp toplayıcımız için.

00:05:05.270 --> 00:05:06.980
Bir kez bizim çöp
toplayıcı çalışıyor

00:05:06.980 --> 00:05:08.810
çöp olup olmadığını belirlemek,

00:05:08.810 --> 00:05:11.015
çünkü değil

00:05:11.015 --> 00:05:14.540
ConnectivityChanged olay var
bu işleyiciye bir gönderme,

00:05:14.540 --> 00:05:17.375
ve bu işleyici aslında kolları

00:05:17.375 --> 00:05:21.080
bizim için referans
DetailsViewController.

00:05:21.080 --> 00:05:24.680
Anlıyorum. Anladım. Bu yüzden.
içinde bu olay oluşturulan

00:05:24.680 --> 00:05:29.600
bu ViewController ve ben
abone oldu ama aboneliğini hiç iptal etmedi.

00:05:29.600 --> 00:05:31.970
Yani her zaman bu var
hemen başvurun.

00:05:31.970 --> 00:05:34.940
Çöp toplayıcıları diyor ki:
"Hey, ne var?"

00:05:34.940 --> 00:05:37.030
"Bunu yiyemezsin."

00:05:37.030 --> 00:05:38.205
Bu doğru.

00:05:38.205 --> 00:05:40.580
Bundan emin olmak istiyorum.
bu doğru, çünkü ben

00:05:40.580 --> 00:05:42.185
bu nasıl inanıyorum
Zihnimde işe yarıyor.

00:05:42.185 --> 00:05:43.150
Haklı olduğumdan emin olmak istiyorum.

00:05:43.150 --> 00:05:47.225
>> Tek görev çöp toplayıcı
bellek anlaşma yapmaktır,

00:05:47.225 --> 00:05:48.605
ve bunu düzgün bir şekilde yapmak için,

00:05:48.605 --> 00:05:50.540
çöp toplayıcı nasıl bilmeli

00:05:50.540 --> 00:05:52.730
doğru bir şekilde tanımlayın
Çöp olsun ya da olmasın.

00:05:52.730 --> 00:05:53.180
Anladım.

00:05:53.180 --> 00:05:55.790
Bu yüzden ulaşılabilir bir ağaç inşa etmek için,

00:05:55.790 --> 00:05:59.270
bir çöp toplayıcı
statik yollar kullanır veya

00:05:59.270 --> 00:06:01.430
sadece rotalar ve statik olaylar

00:06:01.430 --> 00:06:03.500
veya herhangi bir statik özellik
güzergah biri olarak.

00:06:03.500 --> 00:06:06.460
Ayrıca yerel değişkenler,
Bir sürü başka şey.

00:06:06.460 --> 00:06:07.020
Anladım.

00:06:07.020 --> 00:06:11.820
O yüzden bir şey anlatayım.
ve nasıl çalıştığını göstermek.

00:06:11.820 --> 00:06:14.745
Sence biz.
herhangi bir fark görüyor musun?

00:06:14.745 --> 00:06:17.540
Bilmiyorum. Yani
umarım değil çünkü

00:06:17.540 --> 00:06:20.090
O kadar basit ki düşünüyorum.

00:06:20.090 --> 00:06:22.160
Şimdi, benim korkum olsa da

00:06:22.160 --> 00:06:24.200
kayıt yaptırdığımıziçin
ve tekrar tekrar,

00:06:24.200 --> 00:06:26.750
olayları değiştirirsek,

00:06:26.750 --> 00:06:28.850
muhtemelen
birçok olayda.

00:06:28.850 --> 00:06:30.635
Evet, evet. Bunu doğrulayalım.

00:06:30.635 --> 00:06:33.560
Bu yüzden Ayrıntılar sayfasına taşındım.

00:06:33.560 --> 00:06:36.185
Wi-Fi'ımın bağlantısını şimdi keseceğim.

00:06:36.185 --> 00:06:38.510
>> Burada,
iOS Simülatörü.

00:06:38.510 --> 00:06:41.975
Yani aslında kullanıyor.
makinenin Internet.

00:06:41.975 --> 00:06:46.460
Evet, evet. Burada bir olay var.
connectivitydeğiştirildi.

00:06:46.460 --> 00:06:51.910
Birkaç kez geri dönelim.
ve birkaç kez daha,

00:06:51.910 --> 00:06:54.630
Ve ana sayfaya geri döndüm.

00:06:54.630 --> 00:06:58.215
Ben hassas değilim.
şu anda her şey,

00:06:58.215 --> 00:07:01.280
ve ben benim ayrıntıları varsayıyorum
Sayfa artık orada değil, değil mi?

00:07:01.280 --> 00:07:01.430
Evet, evet.

00:07:01.430 --> 00:07:02.810
>> Abonelik işleyicim

00:07:02.810 --> 00:07:04.805
çalışmamalı çünkü
Ben bir şey yapmadım.

00:07:04.805 --> 00:07:07.015
Wi-Fi'ı açalım.

00:07:07.015 --> 00:07:09.510
Tamam, tamam. Biz de yarattık.

00:07:09.510 --> 00:07:11.910
bu Bağlantı Değiştirildi
ikinci sayfada.

00:07:11.910 --> 00:07:12.420
İkinci sayfa.

00:07:12.420 --> 00:07:13.665
İlk sayfadayım.

00:07:13.665 --> 00:07:17.440
Evet, evet. Bu yüzden beklemiyoruz
bizim işleyici, çalışmak için

00:07:17.440 --> 00:07:18.645
Ama bak ne var.

00:07:18.645 --> 00:07:21.090
Sadece dört idarecimiz var.
kodumuzu çalıştırmak,

00:07:21.090 --> 00:07:23.600
ve herhangi bir olabilir
kod güncelleme veritabanı,

00:07:23.600 --> 00:07:25.505
ayarları kaydetme, ne olursa olsun.

00:07:25.505 --> 00:07:28.070
Burada sorun sadece
bellek yönetimi ile

00:07:28.070 --> 00:07:30.635
Çünkü biraz hafıza yıkıyor.

00:07:30.635 --> 00:07:34.970
Biz var çünkü aynı zamanda bir sorun
bazı kodlar da yürütülecek.

00:07:34.970 --> 00:07:37.445
O zaman bu demek oluyor ki
bu Ayrıntılar sayfası,

00:07:37.445 --> 00:07:39.350
şimdi asla olamaz
çöp toplandı?

00:07:39.350 --> 00:07:42.455
Şimdi sadece bu var
Ayrıntılar sayfa her zaman bellekte.

00:07:42.455 --> 00:07:43.400
Ne yazık ki, evet.

00:07:43.400 --> 00:07:44.660
Aman Tanrım, bu kötü.

00:07:44.660 --> 00:07:47.385
Bu çok kötü. Bir geliştirici olarak,

00:07:47.385 --> 00:07:49.560
Bunu her zaman görmüyoruz.

00:07:49.560 --> 00:07:54.280
Bir kullanıcı olarak, uygulamamın çöktürültülmesini görüyorum
Haftada bir kez falan.

00:07:54.280 --> 00:07:56.675
Yeniden başlatacağım.
ve kullanmaya devam edin.

00:07:56.675 --> 00:07:58.220
Bu yüzden rapor edilmedi.

00:07:58.220 --> 00:08:00.350
Çok ciddiye alınmıyor.

00:08:00.350 --> 00:08:03.950
ama özellikle bir sorundur eğer

00:08:03.950 --> 00:08:08.330
orada büyük bir görüntü almak
bu da hafızanı etkiliyor.

00:08:08.330 --> 00:08:10.910
Bu yüzden yorum yapmayı düşünüyorum.
bu kod satırı,

00:08:10.910 --> 00:08:14.680
aslında bazı bellek yükü ekler

00:08:14.680 --> 00:08:19.740
burada ve bir yükleniyor
internetten görüntü.

00:08:19.740 --> 00:08:22.265
Rastgele bir görüntü alıyoruz.

00:08:22.265 --> 00:08:24.815
Bunun gerçekten rastgele olduğunu göstereyim.

00:08:24.815 --> 00:08:27.035
Bakalım ne bulacağız.

00:08:27.035 --> 00:08:29.510
Bu konuda hep endişeliyimdir.

00:08:29.510 --> 00:08:32.210
Tamam. Rastgele bir görüntüye sahibiz.

00:08:32.210 --> 00:08:34.370
ve biz de bu.
yük olacak

00:08:34.370 --> 00:08:37.190
uygulamamız her zaman
Ayrıntılar sayfasına gidin.

00:08:37.190 --> 00:08:37.610
Tamam, tamam.

00:08:37.610 --> 00:08:40.395
Burada göstereyim.

00:08:40.395 --> 00:08:42.970
Bu tamamen bir şey.
Her zaman olan şey, değil mi?

00:08:42.970 --> 00:08:45.220
Ayrıntılar sayfasına gidin,

00:08:45.220 --> 00:08:46.740
muhtemelen bazı bilgiler yüklemek,

00:08:46.740 --> 00:08:48.080
bazı çekerek olabilir
dan bilgi

00:08:48.080 --> 00:08:51.095
bu ekranda bir veritabanı,
Ve bu kötü olabilir.

00:08:51.095 --> 00:08:53.930
Kendini hayal et.
Instagram uygulamasını kullanarak.

00:08:53.930 --> 00:08:55.330
Orada bir Ayrıntılar sayfası var.

00:08:55.330 --> 00:08:56.710
Dokunup takip ediyorsun,

00:08:56.710 --> 00:08:58.435
Detaylara gir, geri dön.

00:08:58.435 --> 00:09:00.720
Git başka bir klasörü kontrol et,
ayrıntılara gir,

00:09:00.720 --> 00:09:03.920
geri gitti ve bir hafta içinde uygulama
çöker ve kimse nedenini bilmiyor.

00:09:03.920 --> 00:09:06.680
İşte o zaman hafıza sorunları
devreye girebiliyordu.

00:09:06.680 --> 00:09:09.180
Seni yakaladım.

00:09:09.180 --> 00:09:11.855
Bunu sana göstermeyeceğim.
bellek sızıntısı hala orada

00:09:11.855 --> 00:09:14.650
çünkü göstermek istiyorum.
siz profilci,

00:09:14.650 --> 00:09:16.375
bu sorunları nasıl tanımlayabileceğinizi.

00:09:16.375 --> 00:09:17.800
Bu sorunları belirlemek için,

00:09:17.800 --> 00:09:19.990
Birkaç aletiniz var.

00:09:19.990 --> 00:09:23.350
Her şeyden önce, bu yerli aletler.
iOs, araçlar sağlar

00:09:23.350 --> 00:09:25.520
ve ikincisi yönetilen bir araçtır,

00:09:25.520 --> 00:09:27.005
Xamarin Profiler.

00:09:27.005 --> 00:09:27.990
Seni yakaladım.

00:09:27.990 --> 00:09:29.520
Sence neden ikisine de ihtiyacımız var?

00:09:29.520 --> 00:09:32.985
Farklı şeyler yapıyorlar.

00:09:32.985 --> 00:09:36.090
Evet, evet. Aslı -nda
bu görüntü nedeniyle.

00:09:36.090 --> 00:09:38.025
Hatırla. Ben de bundan bahsediyordum.

00:09:38.025 --> 00:09:41.565
Onlar gerçekten bilebilirler.
kendi parçası hakkında.

00:09:41.565 --> 00:09:44.190
Yani Xamarin Profiler hiçbir şey bilmiyor.

00:09:44.190 --> 00:09:47.100
bellek yerli hakkında
orada oluşturulan nesneler,

00:09:47.100 --> 00:09:50.010
ve yerli enstrümanlar değil
yönetilen bellek hakkında bilmek.

00:09:50.010 --> 00:09:52.685
Sadece bazı
oluşturulan nesne nin bir parçası.

00:09:52.685 --> 00:09:54.710
Mono bir nesne oluşturduğunda,

00:09:54.710 --> 00:09:57.275
hala bir şekilde bağlamak
yerel nesnelere.

00:09:57.275 --> 00:09:59.210
Böylece görebildiğiniz kişiler,

00:09:59.210 --> 00:10:00.500
Ama geri kalan her şey olmayacak.

00:10:00.500 --> 00:10:01.220
Tamam, tamam. Serin.

00:10:01.220 --> 00:10:02.945
Xamarin Profilci'yi görelim.

00:10:02.945 --> 00:10:06.550
Anlamak daha kolaydır
başında,

00:10:06.550 --> 00:10:10.955
ve aynı zamanda güzel gösterir
ad alanı ve adlandırma gibi.

00:10:10.955 --> 00:10:12.815
Böylece nesnenizi tanımlayabilirsiniz.

00:10:12.815 --> 00:10:16.715
Küçük bir düğme var "Çalıştır"
ve "Start Profile" burada.

00:10:16.715 --> 00:10:20.050
Bir kuruluşa ihtiyacınız var
bunu yapmak için lisans.

00:10:20.050 --> 00:10:23.870
Ama çok uygun ve
Bunu yapmaya seni teşvik ediyorum.

00:10:23.870 --> 00:10:25.190
Bunu bir kez yapınmı,

00:10:25.190 --> 00:10:26.825
aslında ile uygulama oluşturur

00:10:26.825 --> 00:10:31.130
bazı ek meta veriler ve
uygulamanıza gömülü kod.

00:10:31.130 --> 00:10:33.580
Böylece görebiliyorduk ve
nesneleri izleyin.

00:10:33.580 --> 00:10:36.140
>> Şimdi bir şey bu iken
bina ve dağıtım olduğunu,

00:10:36.140 --> 00:10:38.030
biz bir üzerinde çalışıyoruz
anlamına gelen simülatör

00:10:38.030 --> 00:10:40.520
bu tam beygir gücüne sahiptir.

00:10:40.520 --> 00:10:45.320
Bunu yapmamın bir sakıncası var mı?
ve benim cihazda profilleme,

00:10:45.320 --> 00:10:49.150
ya da daha iyi bir üzerinde yapmak
fiziksel iPhone, örneğin?

00:10:49.150 --> 00:10:50.570
Bu iyi bir soru çünkü sen.

00:10:50.570 --> 00:10:52.340
farklı türde profil oluşturma yapabilirsiniz.

00:10:52.340 --> 00:10:52.940
İlginç.

00:10:52.940 --> 00:10:54.230
>> CPU'nun profilini çıkarıyorsanız,

00:10:54.230 --> 00:10:56.480
Bu iyi bir fikir değil.
simülatörde yapmak için

00:10:56.480 --> 00:10:58.820
çünkü siz
cihazın tam gücü.

00:10:58.820 --> 00:11:01.340
Ama eğer bir anı yapıyorsan.
profilci ve tahsis,

00:11:01.340 --> 00:11:04.355
aynı sorunları alırsınız
simülatörve cihazda.

00:11:04.355 --> 00:11:04.730
Mükemmel.

00:11:04.730 --> 00:11:10.300
Bunu dizüstü bilgisayarda yapmayı seviyorum.
Çünkü daha hızlı başlıyor.

00:11:10.300 --> 00:11:13.010
Kodu çevirmez

00:11:13.010 --> 00:11:16.085
yerli talimatlar içine ve sadece
simüle eder ve anında çalıştırın.

00:11:16.085 --> 00:11:18.470
Bu yüzden ne zaman bellek profilleme yapsanız,

00:11:18.470 --> 00:11:20.180
uygulamaları bu kadar çok çalıştırınsa,

00:11:20.180 --> 00:11:23.045
Yani hoşuna gidecek.

00:11:23.045 --> 00:11:25.085
İzin ver ben de aynı testi yapayım.

00:11:25.085 --> 00:11:27.980
Detaylar sayfasını bir kez açtım.

00:11:27.980 --> 00:11:29.840
Ve burada küçük bir tepe görüyorsunuz.

00:11:29.840 --> 00:11:33.590
Bu bizim artan anlamına gelir
önemli ölçüde bellek kullanımı.

00:11:33.590 --> 00:11:35.915
Ama sen bunu görmüyorsun.
bellek burada artış.

00:11:35.915 --> 00:11:38.510
Hala en büyük nesne gibi.

00:11:38.510 --> 00:11:40.730
sistem ağacı ve buralarda bir yerde.

00:11:40.730 --> 00:11:43.155
Birkaç kez daha yapmama izin ver.

00:11:43.155 --> 00:11:45.815
Tekrar artıracağım.

00:11:45.815 --> 00:11:47.610
Burada çiviyi göreceksin.

00:11:47.610 --> 00:11:49.735
Ama burada hiç ani artış görmüyorsun.

00:11:49.735 --> 00:11:53.330
Bu da demek oluyor ki, tahsis ettiğimizde
yerli hafızasında bir şey,

00:11:53.330 --> 00:11:56.220
yansıtmaz
yönetilen dünyada,

00:11:56.220 --> 00:11:59.419
ama biz toplam bellek olduğunu görmek
büyüme ve tahsis etmeme,

00:11:59.419 --> 00:12:00.720
Ki bu en önemli şey.

00:12:00.720 --> 00:12:01.455
Anlıyorum.

00:12:01.455 --> 00:12:04.015
Bu anlık görüntüyle geri dönüyoruz.

00:12:04.015 --> 00:12:05.710
Bellek anlık görüntüsü aslında çalışır

00:12:05.710 --> 00:12:07.875
çöp toplama
yönetilen sitede.

00:12:07.875 --> 00:12:10.195
Bu fotoğrafı yapıyoruz.
Bir tane daha yaparım.

00:12:10.195 --> 00:12:11.755
Daha sonra açıklarım.

00:12:11.755 --> 00:12:14.500
sonuç işareti ile başa çıkmak için.

00:12:14.500 --> 00:12:17.475
Ama temel olarak, şimdi temiz bellek.

00:12:17.475 --> 00:12:19.605
Emin olacağız.
bizim çöp toplayıcı

00:12:19.605 --> 00:12:22.270
zaten koştu ve tahsis
tüm elde edilen nesne.

00:12:22.270 --> 00:12:23.920
Hala oradaki anıları görüyoruz.

00:12:23.920 --> 00:12:25.845
Yani hala düştü.

00:12:25.845 --> 00:12:28.755
Burada neler olduğunu bilmek için,

00:12:28.755 --> 00:12:32.005
biz sadece buraya gidin ve
filtre düğmesini kullanın.

00:12:32.005 --> 00:12:35.265
Tanımlamaya çalışıyoruz.
yalnızca R nesneleri,

00:12:35.265 --> 00:12:38.110
ve ben de görmek istiyorum
canlı nesneler burada.

00:12:38.110 --> 00:12:40.980
Ben de "Uygula"ya bastım.
düğmesi ve voila,

00:12:40.980 --> 00:12:43.575
biz iki ayrıntı denetleyicisi görmek
bellekte asılı,

00:12:43.575 --> 00:12:47.160
olmasa meğer sayılsam da.
ayrıntıları yerinde var.

00:12:47.160 --> 00:12:48.570
Süper örnek, sen de dedin ki,

00:12:48.570 --> 00:12:50.289
benim isim-uzay her şeyi bulmak,

00:12:50.289 --> 00:12:51.610
filtre aşağı.

00:12:51.610 --> 00:12:54.820
Kelimenin tam anlamıyla burada gördüğümüz
Ayrıntı Görünümü Denetleyicisi 2'dir.

00:12:54.820 --> 00:12:55.225
Evet, evet.

00:12:55.225 --> 00:12:56.650
Ama gitmiş olmalı.

00:12:56.650 --> 00:13:00.015
En büyüğüyle başlayacağım.
bu sayfalarda bulunan nesneler.

00:13:00.015 --> 00:13:00.280
Evet, evet.

00:13:00.280 --> 00:13:02.865
Android için de geçerlidir.

00:13:02.865 --> 00:13:04.030
Sadece aktiviteleri arıyorsun.

00:13:04.030 --> 00:13:05.395
modelleri görüntülemek, ya da her neyse,

00:13:05.395 --> 00:13:07.875
çünkü bir kez bir görünüme sahip
orada asılı model,

00:13:07.875 --> 00:13:11.320
tüm bağlantı başlar
diğer nesneleri.

00:13:11.320 --> 00:13:13.380
Tüm hizmetler, tüm ciltler,

00:13:13.380 --> 00:13:16.605
tüm UI ve olacak
çok fazla bellek olsun.

00:13:16.605 --> 00:13:17.500
Anladım.

00:13:17.500 --> 00:13:19.465
Bunun doğru olduğunu göstereyim.

00:13:19.465 --> 00:13:23.260
Bir tane daha açacağım.
zaman, "Snapshot" tuşuna bas.

00:13:23.260 --> 00:13:25.455
Burada üç örnek görüyoruz.

00:13:25.455 --> 00:13:28.569
Geri dönüp "Enstantane"ye basacağım.

00:13:28.569 --> 00:13:30.030
ve hafızada kalır.

00:13:30.030 --> 00:13:30.660
Seni yakaladım.

00:13:30.660 --> 00:13:32.500
Bu bellek sorununu çözelim.

00:13:32.500 --> 00:13:33.700
Ben hazırım.

00:13:33.700 --> 00:13:36.470
Bunu nasıl düzeltebilirsin?

00:13:41.220 --> 00:13:43.525
Bu bir ayrıntı sayfası.

00:13:43.525 --> 00:13:45.460
bu yüzden aboneliğimizi iptal etmeliyiz
bazı bir olay.

00:13:45.460 --> 00:13:49.325
Seni yakaladım. Yani burada gerçek sorun
Ben bir etkinliğe abone oldum.

00:13:49.325 --> 00:13:49.970
Evet, evet.

00:13:49.970 --> 00:13:52.135
O zaman aboneliğimizi iptal etmeliyiz, değil mi?

00:13:52.135 --> 00:13:54.550
Bu doğru. Bu
iyi bir uygulamadır.

00:13:54.550 --> 00:13:56.370
Ne zaman bu artı eşit gördüğünüzde,

00:13:56.370 --> 00:13:59.490
sadece arama eğer
eksi eşit,

00:13:59.490 --> 00:14:01.980
değilse, sen
bunu tanıtmalı.

00:14:01.980 --> 00:14:02.595
Anladım.

00:14:02.595 --> 00:14:05.020
>> Bu ilk göstergedir
Hafıza sızıntın olduğunu.

00:14:05.020 --> 00:14:05.340
Anladım.

00:14:05.340 --> 00:14:10.460
>> Tek istisna,
ana sayfaya abone,

00:14:10.460 --> 00:14:12.285
buradaki ana sayfamızı beğenin,

00:14:12.285 --> 00:14:14.725
ve emin olduğunuzdan bu sayfa

00:14:14.725 --> 00:14:18.010
gitmek mümkün olmayacaktır
yakın zamanda uzak.

00:14:18.010 --> 00:14:20.115
Belki de
Uygulama Temsilcisi düzeyleriniz.

00:14:20.115 --> 00:14:21.530
Sen şey gibisin, ben aslında.
bu olmasını istiyorum

00:14:21.530 --> 00:14:23.290
her zaman için küresel bir olay.

00:14:23.290 --> 00:14:25.845
Ama aynı zamanda belki de ne zaman uygulama
arka plana gider,

00:14:25.845 --> 00:14:27.295
aboneliğini de iptal etmelisiniz.

00:14:27.295 --> 00:14:28.345
Bu doğru.

00:14:28.345 --> 00:14:28.675
Evet, evet.

00:14:28.675 --> 00:14:29.700
Yürütmek için değil.

00:14:29.700 --> 00:14:31.750
Yani şimdi diyorsun ki
göründüğünde,

00:14:31.750 --> 00:14:33.855
abone olacak ve kaybolur,

00:14:33.855 --> 00:14:35.935
aboneliği nizi iptal edin ve daha sonra
üsttekini çıkarın.

00:14:35.935 --> 00:14:37.990
Evet, Bulut'tan çıkardım.

00:14:37.990 --> 00:14:39.710
çünkü biz istiyoruz
her zaman çalıştırmak

00:14:39.710 --> 00:14:42.040
görünür ve her zaman biz kaybolur.

00:14:42.040 --> 00:14:43.850
Artı abone eşit,

00:14:43.850 --> 00:14:45.640
eksi abonelikten çıkma eşittir.

00:14:45.640 --> 00:14:48.735
Karmaşık bir şey yok, sadece.

00:14:48.735 --> 00:14:52.045
herhangi bir ihtiyacımız olmadığından emin olun
içinden geçtikten sonra enstrümanlar.

00:14:52.045 --> 00:14:52.720
Çok güzel.

00:14:52.720 --> 00:14:55.110
Ben de aynı şeyi yapıyorum.

00:14:55.110 --> 00:14:59.490
detaylara giderek,
doğru olduğunu gösterir.

00:14:59.490 --> 00:15:02.980
Anlık görüntü alma,
olaylarıma süzün.

00:15:02.980 --> 00:15:05.300
Üzgünüm. Sadece tıkladım.

00:15:08.700 --> 00:15:12.170
Canlı nesnelere bakalım.

00:15:12.420 --> 00:15:15.345
Detayları görmeliyiz.
çünkü şu anda

00:15:15.345 --> 00:15:17.475
ayrıntılar sayfası. Geri dönüyoruz.

00:15:17.475 --> 00:15:18.990
Bir "Enstantane" tuşuna basıyoruz.

00:15:18.990 --> 00:15:20.880
Ve burada ne bekliyoruz?

00:15:20.880 --> 00:15:23.715
İlk olarak, çöp toplama aslında

00:15:23.715 --> 00:15:26.065
içine bu nesneleri koymak
sonuçlandırma ipucu,

00:15:26.065 --> 00:15:27.625
ama ikinci işaret gerekir 1,

00:15:27.625 --> 00:15:30.340
ya da muhtemelen hala aynı.

00:15:30.340 --> 00:15:31.570
Artık gitti.

00:15:31.570 --> 00:15:33.910
Evet, evet. O yüzden konuşmama izin ver.

00:15:33.910 --> 00:15:36.940
bir sonlandırma ipucu
ikinci, ama şimdi,

00:15:36.940 --> 00:15:40.395
fikir şu ki, biz
bizim ayrıntıları görünümü kaybetti,

00:15:40.395 --> 00:15:43.135
ve hafıza kullanımımız azgeliyor.

00:15:43.135 --> 00:15:43.770
Çok güzel.

00:15:43.770 --> 00:15:46.150
Hafıza sızıntılarını böyle düzeltiriz.

00:15:46.150 --> 00:15:49.420
Evet, evet. Abone oldunuz
Olay. Etkinliklerden aboneliğinizi iptal edin.

00:15:49.420 --> 00:15:51.630
>> Temel başparmak kuralı.

00:15:51.630 --> 00:15:54.915
Bu da çok komik.
çünkü bir, iki soruna neden olur.

00:15:54.915 --> 00:15:56.800
Onu hayatta tuttuğunu gördük.

00:15:56.800 --> 00:15:58.750
Çünkü bu olaylar devam ediyor.

00:15:58.750 --> 00:16:00.715
Şimdi de ateş ediyorsun.
onları birden çok kez,

00:16:00.715 --> 00:16:04.290
ama aynı zamanda, bu sayfada bir şey
hafızada kalacak.

00:16:04.290 --> 00:16:06.685
Bu doğru. İşte bu yüzden.
biz ağır bir görüntü ekledi,

00:16:06.685 --> 00:16:08.205
ve hala hafızalarda.

00:16:08.205 --> 00:16:08.830
Anladım.

00:16:08.830 --> 00:16:10.570
Sana Enstrümanları göstereyim.

00:16:10.570 --> 00:16:13.390
Bu yüzden size takdim edeceğim.
hafıza sızıntımızı geri getirin.

00:16:13.390 --> 00:16:13.800
Tabii ki.

00:16:13.800 --> 00:16:15.985
>> Sadece aboneliği kaldırma olayını kaldırıyoruz.

00:16:15.985 --> 00:16:18.435
Simülama konuşlandıracağım.

00:16:18.435 --> 00:16:21.330
ve enstrümanlar oldukça kolay çalışır.

00:16:21.330 --> 00:16:23.355
Sadece hedefi seçin

00:16:23.355 --> 00:16:25.930
simülatör ve
uygulama ve bu kadar.

00:16:25.930 --> 00:16:28.435
Başlamak için tek ihtiyacın olan bu.
Instruments profilleyicisi.

00:16:28.435 --> 00:16:30.175
Xamarin Uygulaması olsa bile,

00:16:30.175 --> 00:16:32.150
doğru başlayabilirsiniz
Araçlardan,

00:16:32.150 --> 00:16:33.615
Xamarin hakkında hiçbir şey bilmiyor.

00:16:33.615 --> 00:16:35.310
Enstrümanlar nereden geliyor?

00:16:35.310 --> 00:16:38.709
>> Elma. Bu bir Elma.
aracı, Xcode ile birlikte gelir

00:16:38.709 --> 00:16:41.950
ve bir sürü var
içinde araç.

00:16:41.950 --> 00:16:43.450
Bu yüzden sadece yerleşik
çünkü zaten var

00:16:43.450 --> 00:16:45.415
Xcode yüklendi mi? Bu yüzden.
Herkeste bu mu var?

00:16:45.415 --> 00:16:46.015
Ücretsizdir.

00:16:46.015 --> 00:16:48.925
Ücretsizdir. Serin. Yani herkes
Şu anda bu kullanabilirsiniz?

00:16:48.925 --> 00:16:53.880
Evet, evet. Aslında.
bu etkinlikleri görmek,

00:16:53.880 --> 00:16:57.920
yönetilen tarafından oluşturulan olsa bile
bilgi etkinliği gibi dünya,

00:16:57.920 --> 00:17:00.525
hala temsil edilmektedir
yerel bir nesne tarafından.

00:17:00.525 --> 00:17:00.930
Anladım.

00:17:00.930 --> 00:17:02.855
O zaman o nesneyi arayalım.

00:17:02.855 --> 00:17:07.240
Biz buna Ayrıntılar Görünüm Denetleyicisi diyoruz.

00:17:07.240 --> 00:17:09.595
Birkaç tane yaratayım.

00:17:09.595 --> 00:17:11.030
>> Bu aslında
gerçekten harika çünkü

00:17:11.030 --> 00:17:12.240
Enstrümanları hiç kullanmadım.

00:17:12.240 --> 00:17:15.295
Yıllardır kimseye söyleme.

00:17:15.295 --> 00:17:18.440
Herkesin verdiğini sanmıyorum.
bana bir detay. Yani var mı?

00:17:18.440 --> 00:17:20.070
Evet, var.

00:17:20.070 --> 00:17:22.335
Bu mantıklı
Xamarin yerli olduğu için,

00:17:22.335 --> 00:17:23.770
böylece yerel bir nesne oluşturur.

00:17:23.770 --> 00:17:26.380
Evet, evet. Yapmana gerek yok.

00:17:26.380 --> 00:17:27.885
burada bir bellek anlık görüntüsü

00:17:27.885 --> 00:17:29.975
çünkü bizde yok.
çöp toplama burada.

00:17:29.975 --> 00:17:33.780
IOS hiyerarşisini kullanır, bu da
otomatik referans sayacı.

00:17:33.780 --> 00:17:35.605
Temel olarak, ne zaman
bir nesne oluşturursanız,

00:17:35.605 --> 00:17:37.065
sayacı nitremis,

00:17:37.065 --> 00:17:39.550
kullanmadığınız da veya

00:17:39.550 --> 00:17:42.505
kapsamından uzaklara gider
kullanımı, sayaç kararları.

00:17:42.505 --> 00:17:43.845
Sayaç sıfır olduğunda,

00:17:43.845 --> 00:17:46.495
nesne çöp ve
toplanabilir.

00:17:46.495 --> 00:17:48.075
Bu yüzden başlamak oldukça kolaydır

00:17:48.075 --> 00:17:51.735
uygulama ile Araçlar
sadece bu düğmeye tıklayarak.

00:17:51.735 --> 00:17:53.505
Uygulamayı başlatır.

00:17:53.505 --> 00:17:55.860
burada bellek kullanımını gösterir.

00:17:55.860 --> 00:17:57.690
Ayrıntılar sayfasını açalım.

00:17:57.690 --> 00:18:00.425
Seni yakaladım. Alet -leri
Apple geliyor?

00:18:00.425 --> 00:18:02.040
>> Enstrümanlar Apple'dan gelir.

00:18:02.040 --> 00:18:03.350
Apple'dan ücretsiz bir araç.

00:18:03.350 --> 00:18:04.490
Bunu hemen kullanabilirsin.

00:18:04.490 --> 00:18:05.390
Çok güzel.

00:18:05.390 --> 00:18:06.970
Gördüğünüz gibi biz de

00:18:06.970 --> 00:18:10.140
Bu bellek ayak izi sağ
burada bir kez ayrıntılar sayfasını açın.

00:18:10.140 --> 00:18:12.120
Bir kez daha açalım.

00:18:12.120 --> 00:18:15.140
Yani bu çok benzer
Xamarin profilciiçin,

00:18:15.140 --> 00:18:16.870
Ama bu bize göstereceğim.

00:18:16.870 --> 00:18:19.240
herkes için yerli yığın
niyet ve amaçlar.

00:18:19.240 --> 00:18:21.500
Bu doğru. Ne yazık ki, bu

00:18:21.500 --> 00:18:24.090
hakkında hiçbir şey bilmiyor
Xamarin ve yönetilen dünya,

00:18:24.090 --> 00:18:27.025
böylece görmek mümkün olmayacaktır
oluşturduğu yönetilen nesne.

00:18:27.025 --> 00:18:28.990
Çiviyi görüyorsunuz.

00:18:28.990 --> 00:18:30.850
ve bunun geçmediğini görüyorsun.

00:18:30.850 --> 00:18:33.350
Üçüncü kez yapmama izin ver.

00:18:33.350 --> 00:18:35.145
ve sadece nesneleri göster.

00:18:35.145 --> 00:18:38.455
Bir bakalım. Var.
küçük bir filtre düğmesi.

00:18:38.455 --> 00:18:43.170
Buradaki tüm tahsisatlara gidiyoruz.

00:18:43.170 --> 00:18:45.165
ve "Ayrıntılar"a bas.

00:18:45.165 --> 00:18:45.820
Tamam, tamam.

00:18:45.820 --> 00:18:47.555
Burada üç sayfa var.

00:18:47.555 --> 00:18:48.660
Hepsi hafızada.

00:18:48.660 --> 00:18:50.650
ve hafızaya tahsis ederler.

00:18:50.650 --> 00:18:54.070
Nasıl yer aldığımızı göstermeyeceğim.
aynı düzeltme olduğu için,

00:18:54.070 --> 00:18:57.020
biz sadece abonelikten çıkalım,
yönetilen dünya aboneliklerini iptal eder

00:18:57.020 --> 00:19:00.120
nesneden. Nesne
çöp olarak kabul edilir.

00:19:00.120 --> 00:19:04.660
Sonra çöp toplayıcımız.
bu bilgileri toplar,

00:19:04.660 --> 00:19:06.460
sonra yerli toplayabilir
çünkü hiçbir şey

00:19:06.460 --> 00:19:08.490
yönet dünyasından
zaten bunu tutuyor.

00:19:08.490 --> 00:19:10.780
Mantıklı geliyor. Çok çok
çok aynı düzeltme,

00:19:10.780 --> 00:19:12.255
ama bunu tespit etmek için başka bir yol.

00:19:12.255 --> 00:19:15.045
Bu doğru. Yani bu.

00:19:15.045 --> 00:19:19.345
arasındaki farklar hakkında
yönetilen ve yerli dünya.

00:19:19.345 --> 00:19:22.120
Sonraki örneklerim
çoğunlukla yönetilen hakkında olmak

00:19:22.120 --> 00:19:25.320
dünya çünkü yapabilirsiniz
herhangi bir sorun tanıtmak,

00:19:25.320 --> 00:19:26.905
Ve Xamarin'le ilgili değil.

00:19:26.905 --> 00:19:29.570
Dediğin gibi, olabilir.
statik olaya abone olmak,

00:19:29.570 --> 00:19:32.745
bu tanıtmak olabilir
sorun bile her yerde.

00:19:32.745 --> 00:19:35.410
Bir sonraki şey.

00:19:35.410 --> 00:19:38.210
abonelik hakkında ve
abonelikleri olmadan.

00:19:38.210 --> 00:19:39.315
Ama bu durumda,

00:19:39.315 --> 00:19:42.820
biz aslında
örtülü olarak abone olmak,

00:19:42.820 --> 00:19:44.480
artı eşitleri kullanmayız.

00:19:44.480 --> 00:19:46.015
Yani bulmak daha zor.

00:19:46.015 --> 00:19:48.710
Bu durumda, biz bu çalıştırmak
bildirim merkezi çalışıyor

00:19:48.710 --> 00:19:51.795
uygulamamız her döndürüldüğünde belirleyin.

00:19:51.795 --> 00:19:53.695
Bu gözlemciyi de ekliyoruz.

00:19:53.695 --> 00:19:57.525
Bu bir singleton varsayılan merkezidir.

00:19:57.525 --> 00:19:59.700
Bunu söylüyoruz.

00:19:59.700 --> 00:20:02.595
herhangi bir bilgi her zaman
oryantasyon değişti,

00:20:02.595 --> 00:20:04.140
Ve işte bunun için amirim.

00:20:04.140 --> 00:20:04.650
Anladım.

00:20:04.650 --> 00:20:06.690
>> Işleyicinin kendisi,
Oldukça kolay.

00:20:06.690 --> 00:20:08.125
Orada hiçbir şey yapamayız.

00:20:08.125 --> 00:20:11.665
hata ayıklamak için basacağız.

00:20:11.665 --> 00:20:12.465
Anladım.

00:20:12.465 --> 00:20:15.525
>> İzin verin
bağlantı şeyler çünkü

00:20:15.525 --> 00:20:18.630
biz farklı tanıtmak istiyorum
bellek sorunu türleri.

00:20:18.630 --> 00:20:21.525
Ben de bizim yorum
biz gerekmez çünkü görüntü

00:20:21.525 --> 00:20:24.430
bellek göstermek için
ayak izi, orada.

00:20:24.430 --> 00:20:28.390
Biz sadece deney edecektir
UI görünüm denetleyicileri ve görünümleri.

00:20:28.390 --> 00:20:30.650
Çok güzel. Yani bu
çok benzer,

00:20:30.650 --> 00:20:32.870
ama bu desen, sen
abone olabilir,

00:20:32.870 --> 00:20:34.605
belki de bir eylemde geçiyor.

00:20:34.605 --> 00:20:38.340
Ya da bu durumda, ne işe yarar
Burada geri aramanız olduğu yazıyor.

00:20:38.340 --> 00:20:40.010
Delegeler çok benzer.

00:20:40.010 --> 00:20:41.115
Bence bu kalıplara göre.

00:20:41.115 --> 00:20:42.480
Yani bu sadece bir şey.
Ben de alışkınım.

00:20:42.480 --> 00:20:45.590
Bu doğru. Bu.

00:20:45.590 --> 00:20:47.864
ana fikir çünkü
abone olduğunuzda,

00:20:47.864 --> 00:20:51.405
eğer referans geçiyorsun
UI View Controller da.

00:20:51.405 --> 00:20:53.425
Bu sadece farklı bir
referans geçmek için bir yol.

00:20:53.425 --> 00:20:55.260
Bazen o kadar da açık değil.

00:20:55.260 --> 00:20:57.955
Yani aboneliğimiz var.
Burada çalışıyor.

00:20:57.955 --> 00:20:59.305
Sadece bir kez çalışıyor.

00:20:59.305 --> 00:21:01.780
Kapatıp tekrar açalım.

00:21:01.780 --> 00:21:03.525
Şimdi, çift tıkladık.

00:21:03.525 --> 00:21:05.230
Sana bunu göstereyim.

00:21:05.230 --> 00:21:07.240
Bir kere döndürmek, iki tane almak,

00:21:07.240 --> 00:21:11.655
bu da bazı UI Görünümü var demektir
Bellekte asılı denetleyici,

00:21:11.655 --> 00:21:13.535
hala ilkini işlerken.

00:21:13.535 --> 00:21:13.980
Anladım.

00:21:13.980 --> 00:21:15.430
>> Eğer varsa bu bir sorun olabilir

00:21:15.430 --> 00:21:19.660
bazı veritabanı güncelleştirme mantığı
veya HTTP fazla mesai isteği.

00:21:19.660 --> 00:21:21.340
Kullanım günündeki gibi,

00:21:21.340 --> 00:21:24.810
uygulamanız öldürülmez,
devre dışı bırakın, yeniden etkinleştirin.

00:21:24.810 --> 00:21:26.740
Tüm bunlara sahip olacak.
Hala bellekte görüntüle,

00:21:26.740 --> 00:21:28.265
Ve bir hafta içinde çökebilir.

00:21:28.265 --> 00:21:28.785
Evet, evet.

00:21:28.785 --> 00:21:30.105
Peki bunu nasıl düzeltebilirim?

00:21:30.105 --> 00:21:31.550
Çok kolay.

00:21:31.550 --> 00:21:34.145
Aboneliğinizi iptal ettiğinizi varsayıyorum.

00:21:34.145 --> 00:21:35.835
Bu doğru. Bunu yapmak daha zor.

00:21:35.835 --> 00:21:38.685
aboneliğini iptal edin çünkü
artı eşit yok.

00:21:38.685 --> 00:21:42.010
Bana da ne göstereyim
aslında buraya gönderin.

00:21:42.010 --> 00:21:43.365
Abone olduğunuzda,

00:21:43.365 --> 00:21:46.395
Yöntem adını geçiyorsun.

00:21:46.395 --> 00:21:48.215
Aslında bir hareketin yanından geçiyorsun.

00:21:48.215 --> 00:21:51.745
ve derleyici bir yapıyor
bunu gizleme büyük bir iş,

00:21:51.745 --> 00:21:54.150
ve hayatımızı kolaylaştırmak.

00:21:54.150 --> 00:21:55.945
Derleyici çok güzel.

00:21:55.945 --> 00:21:57.255
Bize çok iyi davrandın.

00:21:57.255 --> 00:22:00.415
Bu yüzden biz de müteahhit olmayı seviyoruz.

00:22:00.415 --> 00:22:04.360
Bu yüzden aslında sorar
NSNotification ile eylem.

00:22:04.360 --> 00:22:07.840
Burada NSNotification imzalıyorum.

00:22:07.840 --> 00:22:13.365
ve sonra bu gösterimi kullanarak,
bu nesneyi yapıştırma.

00:22:13.365 --> 00:22:16.560
Yani yöntem adı yerine,

00:22:16.560 --> 00:22:19.225
biz aslında geçiyoruz
bir eylem ve nesne,

00:22:19.225 --> 00:22:20.960
hangi referans tutar

00:22:20.960 --> 00:22:23.610
nasıl bu meta veriler
yöntemi aramak için.

00:22:23.610 --> 00:22:26.555
Yani yöntemi geçemesek.
Sadece bir referans.

00:22:26.555 --> 00:22:30.060
Bizim durumumuzda, en önemli
bu başvurugeçerken parçası,

00:22:30.060 --> 00:22:32.155
Hangi UIV denetleyicisi,

00:22:32.155 --> 00:22:34.170
Ve bu yüzden hafızada tutuluyor.

00:22:34.170 --> 00:22:35.260
Anladım.

00:22:35.260 --> 00:22:35.865
Tamam, tamam.

00:22:35.865 --> 00:22:36.670
Mantıklı geliyor. Evet.

00:22:36.670 --> 00:22:38.595
Detayları göstermeyeceğim.

00:22:38.595 --> 00:22:40.390
çünkü bellek
sızıntı hala orada

00:22:40.390 --> 00:22:43.975
çünkü biz bu gördüm
biraz zaman kazanmak için bir şey.

00:22:43.975 --> 00:22:45.500
Odaklanmak istiyorum.

00:22:45.500 --> 00:22:48.830
en kötü durum senaryosu hangi
farkında olmalısınız.

00:22:48.830 --> 00:22:54.250
Yerli dünya yerleştirmediği zaman
yönetilen dünya ile güzel.

00:22:54.250 --> 00:22:56.280
Seni yakaladım. Ne zaman
iki dünya çarpışıyor.

00:22:56.280 --> 00:23:00.265
Bu doğru, çünkü her zaman
biz, oluşturulan nesne başardık

00:23:00.265 --> 00:23:02.155
ve oluşturulan bir yerli nesne var,

00:23:02.155 --> 00:23:05.690
ve o / o çalışıyor
yerel nesneleri bulmak,

00:23:05.690 --> 00:23:07.495
yönetilen dünyamız,

00:23:07.495 --> 00:23:09.330
Bu nesneyle işim hala bitmedi.

00:23:09.330 --> 00:23:11.270
Lütfen bekleyin, yapma.

00:23:11.270 --> 00:23:13.765
çünkü nesne toplamak
Hala bununla çalışıyorum.

00:23:13.765 --> 00:23:14.525
Seni yakaladım.

00:23:14.525 --> 00:23:15.805
Tersi olabilir.

00:23:15.805 --> 00:23:19.130
ne zaman yerli bir dünya
bir nesne oluşturabilir,

00:23:19.130 --> 00:23:20.265
ve şimdi yönetilen bir dünya düşünüyor,

00:23:20.265 --> 00:23:22.450
Daha bitmedi, yine de.
orada, o zaman bekleyelim.

00:23:22.450 --> 00:23:25.015
Başka bir şey olmasa bile.
bu nesneye yapılan atıflar,

00:23:25.015 --> 00:23:29.015
tutabilir,
çöp olarak değil tutun.

00:23:29.015 --> 00:23:29.820
Seni yakaladım.

00:23:29.820 --> 00:23:31.460
Bunu açıklayabilirim.

00:23:31.460 --> 00:23:34.640
bu küçük küçük görüntü
ölümsüz nesnelerin.

00:23:34.640 --> 00:23:37.230
Bu yüzden ölümsüz lük yapma.
Nesne. Bunlar kötü.

00:23:37.230 --> 00:23:38.435
Kulağa hoş geliyor.

00:23:38.435 --> 00:23:39.963
Evet, evet.

00:23:39.963 --> 00:23:43.355
Bu,
Bu iki dünya var.

00:23:43.355 --> 00:23:46.925
Yerli, sağda gördüğünüz
yerel Görünüm Denetleyicisi ve Görünümler,

00:23:46.925 --> 00:23:49.640
ve soldan var

00:23:49.640 --> 00:23:52.580
yönetilen dünya C Sharp kim
Denetleyicileri ve Görünümleri görüntüleyin.

00:23:52.580 --> 00:23:55.640
Ne zaman ne olduğunu bilmesen.
yerli dünyada oluyor,

00:23:55.640 --> 00:23:58.070
eğer toplayamazsınız
Bu dünyadan.

00:23:58.070 --> 00:24:00.905
Sana bir örnek göstereceğim.
Bunu nasıl yapabileceğini.

00:24:00.905 --> 00:24:03.275
Yani benim örneğimde,

00:24:03.275 --> 00:24:07.235
Ben burada küçük bir eklemek istiyorum
küçük düğme "Kaydet",

00:24:07.235 --> 00:24:11.375
ve sadece kapatmak istiyorum
Kullanıcı bunu vurduğunda görüntüleyin.

00:24:11.375 --> 00:24:13.925
Varsayalım ki
"Kaydet" düğmesi de yapacak

00:24:13.925 --> 00:24:17.330
bazı kaydetme mantığı veritabanı
veya HTTP ne olursa olsun çağırır,

00:24:17.330 --> 00:24:19.055
sadece geri gitmiyor

00:24:19.055 --> 00:24:22.145
ve aslında yürütür
bazı ek eylem.

00:24:22.145 --> 00:24:22.775
Tamam, tamam.

00:24:22.775 --> 00:24:24.980
>> Bu düğmenin ayrıntıları olarak,

00:24:24.980 --> 00:24:26.300
işleyiciyi göndeririz.

00:24:26.300 --> 00:24:31.205
Bu işleyici diyor ki.
lütfen bu kumandayı kapatın.

00:24:31.205 --> 00:24:33.395
Bana tamamen yasal görünüyor.

00:24:33.395 --> 00:24:35.255
Evet, evet. Biz tanıtacağız
Bir hafıza sızıntısı.

00:24:35.255 --> 00:24:36.230
Tamam, tamam.

00:24:36.230 --> 00:24:42.515
Çok kötüsün. Ne yazık ki
ve bu yaygın bir modeldir.

00:24:42.515 --> 00:24:45.005
Bizde hiç yok.
burada olduğu gibi statik olay.

00:24:45.005 --> 00:24:47.195
Bizde hiç yok.
burada gibi tek bir ton.

00:24:47.195 --> 00:24:49.025
Bu düğmeyi burada tutuyoruz.

00:24:49.025 --> 00:24:51.650
Bu sadece yerel bir öğedir.

00:24:51.650 --> 00:24:54.260
Tamam James, şimdi biz.
bir düğme oluşturdu ve

00:24:54.260 --> 00:24:56.735
biz eklemek istiyorum
navigasyon görünümümüz.

00:24:56.735 --> 00:25:00.440
Biz de dedik ki.
navigasyon öğesi de kullanmayın

00:25:00.440 --> 00:25:05.225
herhangi bir statik referanslar hiçbir şey
bu ve sadece.

00:25:05.225 --> 00:25:08.015
Şimdi alt düğme var
Ve profilciye başlayalım.

00:25:08.015 --> 00:25:09.890
Evet ve tekrar,
süper benzer desen.

00:25:09.890 --> 00:25:11.285
Bir düğme oluşturuyorum.

00:25:11.285 --> 00:25:15.800
bir düğme ekleyin ve sonra pop
View Controller normal görünüyor.

00:25:15.800 --> 00:25:18.185
Kullanmayan bir temsilciye sahip

00:25:18.185 --> 00:25:20.540
herhangi bir dış veya statik referans

00:25:20.540 --> 00:25:23.225
ve herhangi bir referans geçmez
denetleyicimizden.

00:25:23.225 --> 00:25:23.750
Seni yakaladım.

00:25:23.750 --> 00:25:27.090
>> İyi çalışmalı,
Doğru? Bir bakalım.

00:25:27.280 --> 00:25:32.780
Böylece profiloluşturucu nesneleri gösterir

00:25:32.780 --> 00:25:34.760
en başında oluşturulan ve ben kulüpler

00:25:34.760 --> 00:25:37.790
izlemeye başlayacak
en başında onları.

00:25:37.790 --> 00:25:39.530
Bu yüzden doğru anlık görüntüleri gizledim

00:25:39.530 --> 00:25:42.455
şimdi ve sadece benim nesnelere filtreleme.

00:25:42.455 --> 00:25:45.380
Yine çok yaygındır
sorun giderme deseni

00:25:45.380 --> 00:25:48.800
bellek sorunları sadece
sadece nesnelerimi görün.

00:25:48.800 --> 00:25:52.235
O zaman oraya bir kez gittim.
Bu benim düğmem.

00:25:52.235 --> 00:25:55.565
Bu yeni bir kontrol.
güzel bizim uygulama.

00:25:55.565 --> 00:25:56.870
Hafızamızda bu var.

00:25:56.870 --> 00:25:58.745
Ki bu doğru, bunu bekliyoruz.

00:25:58.745 --> 00:26:03.410
Geri dönersek, bir tane vuralım.
daha fazla zaman ve bir kez daha.

00:26:03.410 --> 00:26:04.430
Bir kez daha biliyorum çünkü.

00:26:04.430 --> 00:26:05.195
Bir kez daha.

00:26:05.195 --> 00:26:06.380
Tamam, ve hala orada.

00:26:06.380 --> 00:26:08.270
Bir kez daha, hala orada.

00:26:08.270 --> 00:26:11.030
O zaman daha çok açalım.

00:26:11.030 --> 00:26:14.090
Ayrıca kapatalım.
farklı bir şekilde geri gidiyor,

00:26:14.090 --> 00:26:17.390
kaydetmek için gidiyor, aslında
temelde aynı şeyi yapıyor.

00:26:17.390 --> 00:26:20.090
"Bellek"e bakalım.
anlık görüntü" bir daha

00:26:20.090 --> 00:26:22.610
zaman ve oh vay biz
beş örneği var

00:26:22.610 --> 00:26:24.920
orada asılı sayfaları
bellek ve varsa

00:26:24.920 --> 00:26:28.130
orada büyük bir görüntü
bellek bir sürü olacak

00:26:28.130 --> 00:26:28.550
Anladım.

00:26:28.550 --> 00:26:32.615
Yani bu çok yaygın bir model.

00:26:32.615 --> 00:26:36.800
çünkü belli değil ki
Burada bir hafıza sızıntısı var.

00:26:36.800 --> 00:26:39.830
Buradaki sorun şu ki;
bu UIBarButtonItem

00:26:39.830 --> 00:26:43.910
aslında tutar
bazı yerli kaynak,

00:26:43.910 --> 00:26:45.485
yerel kaynağa bağlıdır.

00:26:45.485 --> 00:26:49.100
Eğer bunu açıkça söylemezsek.
Artık bu düğmeye ihtiyacım yok.

00:26:49.100 --> 00:26:51.020
eğer tanıtacak
Bu ölümsüz nesne.

00:26:51.020 --> 00:26:53.135
Seni yakaladım. Peki nasıl
Bu şeyi ben çözecek miyim?

00:26:53.135 --> 00:26:56.240
Bunu çözmek için

00:26:56.240 --> 00:26:59.900
ViewDisappear etkinliğimiz ve
Düğmemizle bir şeyler yap.

00:26:59.900 --> 00:27:00.150
Tamam, tamam.

00:27:00.150 --> 00:27:01.220
Yani iki seçeneğimiz var.

00:27:01.220 --> 00:27:02.735
biz de kullanabilirsiniz

00:27:02.735 --> 00:27:05.299
Tıklanan olay ve
abone olmak ve aboneliği iptal etmek,

00:27:05.299 --> 00:27:07.160
ama biz geri olacak

00:27:07.160 --> 00:27:10.400
abone olduğumuzda ilk öğemiz
aboneliği ni olmadan.

00:27:10.400 --> 00:27:12.560
Daha ilginç bir şey yapalım.

00:27:12.560 --> 00:27:14.030
Düğmeyi atacağız.

00:27:14.030 --> 00:27:15.680
Bu hoşuma oldu. Ben.
Bitti, değil mi?

00:27:15.680 --> 00:27:18.320
Evet, bir bakıma.
yönetilen dünya,

00:27:18.320 --> 00:27:20.495
"Düğmeyi bitirdim.
lütfen atın."

00:27:20.495 --> 00:27:24.365
Belli değil çünkü.
çok sayıda görünüm ve sarmalayıcı

00:27:24.365 --> 00:27:26.540
Xamarin iOS var
bu bertaraf yöntemi ve

00:27:26.540 --> 00:27:29.015
Ne zaman olduğunu gerçekten bilmiyorsun.
Öyle demelisin.

00:27:29.015 --> 00:27:30.815
Yani ilginç bir dava.

00:27:30.815 --> 00:27:32.975
Ama bunu yapalım ve koşalım.

00:27:32.975 --> 00:27:34.700
Eklediğim tek şey bu.

00:27:34.700 --> 00:27:37.500
önceki uygulama çalıştırdığından beri.

00:27:38.290 --> 00:27:42.530
Profilciyi başlatıyorum.
ve aynı kullanım örneği yapıyor.

00:27:42.530 --> 00:27:44.000
Nesneleri takip edeceğiz.

00:27:44.000 --> 00:27:46.310
çok başında ve yapmak
elden çıkarılabildiklerinden eminler.

00:27:46.310 --> 00:27:48.050
Çok güzel. Bu çok hoş.

00:27:48.050 --> 00:27:49.670
Yani dediğin gibi,

00:27:49.670 --> 00:27:53.270
geçmek yerine
tüm eylem,

00:27:53.270 --> 00:27:55.130
sadece nasıl benzer olabilir

00:27:55.130 --> 00:27:57.605
bağlantı yapmak,
abone olmak, aboneliği iptal etmek,

00:27:57.605 --> 00:28:00.590
Bunu anlardım.
dışarı, ama bu durumda,

00:28:00.590 --> 00:28:03.125
zaten öyle yaptın
Sadece ondan kurtulursun.

00:28:03.125 --> 00:28:04.010
Bu doğru.

00:28:04.010 --> 00:28:04.875
Çok güzel.

00:28:04.875 --> 00:28:08.455
Evet, çünkü biz.
aboneliğinin iptalini bekleyin.

00:28:08.455 --> 00:28:10.840
Bu bir çeşit abonelik değil.

00:28:10.840 --> 00:28:14.230
biz sadece geçmek ve delege
yerel nesnenin içinde.

00:28:14.230 --> 00:28:16.045
NotificationCenter durumunda,

00:28:16.045 --> 00:28:18.790
bu bir çeşit abonelik çünkü
yerel nesnede geçiyoruz

00:28:18.790 --> 00:28:21.760
bazı statik içine
örnek veya singleton.

00:28:21.760 --> 00:28:24.760
Bu durumda, biz sadece kullanılan
yerel kaynaklarımızda,

00:28:24.760 --> 00:28:26.395
bir bellek sızıntısı beklemiyoruz.

00:28:26.395 --> 00:28:26.680
Seni yakaladım.

00:28:26.680 --> 00:28:28.630
Ama ne yazık ki görebiliyorum

00:28:28.630 --> 00:28:32.660
Bu bariyer çok ve insanlar
bu durumlara girmek.

00:28:32.680 --> 00:28:37.530
O zaman aynı numarayı yapalım.

00:28:37.750 --> 00:28:41.760
Keşke bu verileri kaydedebilseydi.

00:28:41.950 --> 00:28:46.310
Yani sadece bir Görünümüvar
Denetleyici ve temsilci.

00:28:46.310 --> 00:28:48.290
"Kurtar" tuşuna basalım.

00:28:48.290 --> 00:28:51.215
Geri dönelim.

00:28:51.215 --> 00:28:54.005
Detaylar sayfasında kalalım.

00:28:54.005 --> 00:28:56.975
"Bellek anlık görüntüsünü" vurun ve bir tane görürsünüz.

00:28:56.975 --> 00:28:59.315
Birkaç kez daha tıklatayım.

00:28:59.315 --> 00:29:02.735
Bunu konuşuruz. Bu yüzden biz
burada sadece bir örnek var.

00:29:02.735 --> 00:29:10.805
"Kaydet"e, "Anlık Görüntü"ye tıklıyorum
ve tbmm kaybolur.

00:29:10.805 --> 00:29:12.380
Tamam? Bellek sızıntısı düzeltildi.

00:29:12.380 --> 00:29:13.250
Çok güzel. Güzel.

00:29:13.250 --> 00:29:14.900
Ölümsüz nesne öldürüldü.

00:29:14.900 --> 00:29:16.445
Öldürüldü. Çok güzel.

00:29:16.445 --> 00:29:17.810
Aksi takdirde, bu harika.

00:29:17.810 --> 00:29:20.600
Çok basit, olaylarına bak.

00:29:20.600 --> 00:29:22.850
ama aynı zamanda nasıl geçiyorsun bak

00:29:22.850 --> 00:29:24.890
etrafında bu eylemler ve hatta ben

00:29:24.890 --> 00:29:26.870
bunu düşünmez bile.
size karşı dürüst olmak için düğme

00:29:26.870 --> 00:29:29.315
çünkü yapıcı
Bu şeyi geçiyor.

00:29:29.315 --> 00:29:29.600
Evet, evet.

00:29:29.600 --> 00:29:30.725
Çok havalı.

00:29:30.725 --> 00:29:33.350
>> Ben de tavsiye ederim

00:29:33.350 --> 00:29:36.425
geliştiricilerimiz daha fazla kullanmak için
genellikle haftada bir kez gibi,

00:29:36.425 --> 00:29:39.545
her sprint ve daha sonra
bellek kullanımını görmek,

00:29:39.545 --> 00:29:41.585
bunu bir UI test çalışması olarak görebilirsiniz.

00:29:41.585 --> 00:29:45.590
Bu küçük gösterir
bellek çalışma seti.

00:29:45.590 --> 00:29:48.050
Yani sadece üzerinde görmek
ay ya da büyür

00:29:48.050 --> 00:29:51.530
değil ve eğer seni büyütüyorsa
Muhtemelen hafıza sızıntısı var.

00:29:51.530 --> 00:29:53.360
Ios'u gösterdiniz.

00:29:53.360 --> 00:29:54.560
Peki ya Android için?

00:29:54.560 --> 00:29:57.500
Herhangi bir özel diğer var mı
kullanabileceğiniz araçlar var mı?

00:29:57.500 --> 00:29:59.465
Bu harika bir soru.
çünkü, Android,

00:29:59.465 --> 00:30:02.000
konuştuğumuz her şey
android için iOS geçerlidir.

00:30:02.000 --> 00:30:02.150
Seni yakaladım.

00:30:02.150 --> 00:30:03.440
>> Sadece farklı bir araç var

00:30:03.440 --> 00:30:07.145
Android yerli profilci
Android Profiler denir.

00:30:07.145 --> 00:30:08.390
Gerçekten harika.

00:30:08.390 --> 00:30:09.740
Bu size bir sürü gösterir

00:30:09.740 --> 00:30:12.380
bilgi ama yine de var
kim olduğunu kullanmak zorunda

00:30:12.380 --> 00:30:14.330
birlikte Xamarin profilci

00:30:14.330 --> 00:30:16.790
yönetilen nedeniyle
dünya ve yerli dünya.

00:30:16.790 --> 00:30:17.930
Seni yakaladım. Bu sadece

00:30:17.930 --> 00:30:19.340
bu serin sesler
harika aletler var.

00:30:19.340 --> 00:30:22.400
nerede olursa olsun kullanılabilir
iOS, Android' desiniz.

00:30:22.400 --> 00:30:23.240
Bu doğru.

00:30:23.240 --> 00:30:24.005
Bunu yapabilirim.

00:30:24.005 --> 00:30:25.820
Dürüst olmak gerekirse, sadece arıyorum
bunlardan bazılarında,

00:30:25.820 --> 00:30:28.160
Kodumdan oldukça eminim.
Bir sürü kötü şey var.

00:30:28.160 --> 00:30:29.480
Bir sonraki akışımda,

00:30:29.480 --> 00:30:31.790
Hepsi bu kadar olacak.
Hafıza sızıntılarımı düzeltiyor.

00:30:31.790 --> 00:30:32.180
Tamam, tamam.

00:30:32.180 --> 00:30:34.280
Çok güzel. Başka bir şey Alexi
Konuşmak istediğin şey mi?

00:30:34.280 --> 00:30:35.315
Hepsi bu gün için.

00:30:35.315 --> 00:30:37.865
Harika. Teşekkürler.
herkes atoluk için.

00:30:37.865 --> 00:30:40.010
Alexi, çok teşekkür ederim.
Tüm bu şeyleri ortaya çıkar.

00:30:40.010 --> 00:30:42.305
Teşekkürler çocuklar. Teşekkür
Sen James bana izin için.

00:30:42.305 --> 00:30:43.970
>> Kesinlikle, ve emin olun

00:30:43.970 --> 00:30:45.920
tüm kontrol
aşağıdaki gösteri notları,

00:30:45.920 --> 00:30:47.420
tüm kaynağı açmak
kod, tüm bağlantılar

00:30:47.420 --> 00:30:48.980
Aşağıdaki tüm belgeler için.

00:30:48.980 --> 00:30:51.740
Ayrıca aka.ms/Xamarin gidebilirsiniz

00:30:51.740 --> 00:30:54.485
tüm serisi için en iyi uygulamalar.

00:30:54.485 --> 00:30:55.790
Bu yüzden abone olduğundan emin olun

00:30:55.790 --> 00:30:57.695
bugün nerede olursanız olun
şu anda izliyor.

00:30:57.695 --> 00:30:59.090
Ben James Montemagno.

00:30:59.090 --> 00:31:01.790
Bu Xamarin olmuştur
Göster ve izlemek için teşekkürler.

00:31:01.790 --> 00:31:02.480
Teşekkürler çocuklar.

00:31:02.480 --> 00:31:09.230
[MÜZİk]

00:31:09.230 --> 00:31:11.120
Hey, James burada.
Sadece kontrol etmek istedim.

00:31:11.120 --> 00:31:13.175
ve için teşekkür ederim
Bu videoyu izliyorum.

00:31:13.175 --> 00:31:16.265
Şimdi her şeyi yapmak
gibi yapmak istediğinizi biliyorum,

00:31:16.265 --> 00:31:18.710
abone olmak ve ding
bu bildirim zili,

00:31:18.710 --> 00:31:20.825
bir parçası haline
bildirim ekibi.

00:31:20.825 --> 00:31:22.190
Buradayken, bir göz atın.

00:31:22.190 --> 00:31:25.400
tüm bu harika videolar
Zaten kodladığım.

00:31:25.400 --> 00:31:29.040
Şu şeye tıkla. Tıklatın
Izle, yap.

