Yukarıdaki Objective-C kod parçasında, neden "return self self", "Uyumsuz işaretçi türünden döndür" uyarısı ile sonuçlanır? Uyumsuz işaretçi türü nedir ve nasıl düzeltilir?Objective-C Protokolü Madness - protokole dayanarak nesne nasıl döndürülür?
cevap
, yıldız gerekmez. id
Çünkü
@interface Eat : NSObject<Eating> {
}
- (id<Eating>)me;
@end
Yıldız işareti değil, Asteriks: http://en.wikipedia.org/wiki/Asterix;) (beni aldı Bu yorumu doğrulamak için üç kez!) – dreamlax
kaldır id * ve kimliği ile değiştirin. kimlik zaten bir işaretçi.
Tamam .. cevabı "* id" yerine "id" dir.
Size verilen cevaplardan birini kabul etmelisiniz. –
Neden downvote? Bunu ilk olarak ilan etti çünkü problemi kendisi çözdü. –
Sen kullanımda kapalı hafifçe vardır - bu:
- (id<Eating>)me { return self; }
(Eğer bir nesneye değil, bir işaretçi id dönüyor çünkü). id
bir işaretçi kendisi olduğu için
bir nesneye bir işaretçi ** arasındaki fark ** ve ** kimliği ** nedir? –
Aslında hiçbiri yoktur - bu yüzden kodunuz çalışmadı. (NSObject *) ve (id) zaten aynı şeydir (gerçekten bu tartışma için yeterince yakın değil). Bu yüzden (id *) dediğiniz zaman (NSObject **). Evet, bu id ve Sınıfın her ikisini de kullanmadığınız nesnelerdir * ... –
(bazı küçük farklılıklar olsa da) esasen NSObject *
olduğunu. Eğer self
döndüğünüzde Böylece, sen -(NSObject *)
dönüyor. Ne var NSObject **
gibidir id *
olduğunu.
'id'' struct objc_object * 'değil,“ NSObject * 'için bir yazım hatasıdır. Fark önemli. – dreamlax
- 1. Swift'deki protokole uygun tüm sınıflar nasıl listelenir?
- 2. ObjectiveC blokları Java eşdeğeri
- 3. Swift, nesne referansına dayalı Hashable protokolü nasıl uygulanır?
- 4. UITableViewCellAccessoryDisclosureIndicator nasıl döndürülür?
- 5. MapView nasıl döndürülür?
- 6. objectivec: fb gönderi yorumu hatası
- 7. Bir dizeden Enum değeri nasıl döndürülür?
- 8. Action() 'dan nasıl değer döndürülür?
- 9. NHibernate ISession.SaveOrUpdate kimliği nasıl döndürülür
- 10. Survdiff nasıl döndürülür p değeri
- 11. Bir JavascriptConverter oluştururken, bir dizi nasıl döndürülür?
- 12. ObjectiveC UISwitch varsayılanı OFF olarak ayarlandı
- 13. Java'da icy protokolü nasıl okunur?
- 14. RedirectToAction kullanırken protokolü nasıl ayarlayabilirim?
- 15. protokolü Ecto.Queryable
- 16. GKLocalPlayerListener protokolü
- 17. test protokolü uygunluk
- 18. ObjectiveC Yöntemde Protokol Adını Belirtme Sözdizimi Argüman
- 19. Bir protokole uygun bir sınıfi uzatmak arasındaki fark VS benzer bir duruma dayanan bir protokolü genişletiyor mu?
- 20. C# DataTable doğru döndürülür
- 21. Resim galeriden seçildiğinde döndürülür
- 22. Çalışma zamanı bilgilerine dayanarak sınamaları nasıl atlamalı?
- 23. Xpath - Çocuğun özniteliğine dayanarak ebeveyn nasıl seçilir?
- 24. Bittorrent Protokolü Uygulaması
- 25. Bir Powershell işlevinden birkaç öğe nasıl döndürülür
- 26. Ajax senaryosunda bir hata nasıl döndürülür
- 27. Golang'da dinamik tip yapısı nasıl döndürülür?
- 28. Python'dan JSON olarak nasıl değer döndürülür?
- 29. sql saat alanının ortalaması nasıl döndürülür
- 30. SQL'de zaman damgaları arasındaki fark nasıl döndürülür?
@protocol Kullanımı - Yalnızca ihtiyacınız olan yöntemlerden ziyade, bu nesneler üzerinde NSObject yöntemlerini kullanmanıza izin verir. –
Kornel