SORU
14 NİSAN 2011, PERŞEMBE


En iyi yolu bir iPhone Uygulaması RestKit kullanmak

Bir iPhone uygulaması yazıyorum ve son olarak Hizmetleri DİNLENME bağlanmak için bir çerçeve olarak RestKit decided var.

Kurmayı düşünüyorum bu şekilde uygulamam Denetleyicileri tamamen agnostik RestKit olmak zorunda. Eg. Eğer olsaydı, bir oturum açma ekranı, her zamanki RestKit senaryo (temel örnek programlar gibi birkaç blog girişleri tarafından oluşturulan RestKit geliştiriciler olacak denetleyicisi uygulamak RKRequestDelegate protokolü ve kullanım RKClient arama hizmeti Denetleyicisi geçen öz ( Denetleyici) olarak temsilci. Kullanıcı Denetleyicileri ve görüşlerini gelişmekte olan bunu saklamak istiyorum.

Ne düşündüğümü aşağıdadır. Kullanıcı girişi olan bir LoginService olacak. Başarı ve başarısızlık için iki yöntem olan protokol LoginServiceDelegate olacak. Ve Denetleyici LoginServiceDelegate uygulamak ve LoginService giriş Yöntemini çağırın ve bir başarı ya da başarısızlık geri alabilir. Ancak bunu yapmak için, benim LoginService aramalar denetleyicisine geri devretmek için bir yol gerekir. RestKit izin vermez bana bunu tek yolu ben mümkün Bu yapmak için başlatma LoginService ile bir LoginServiceDelegate, depolama temsilci olarak bir özelliği ve arama uygun yöntemi temsilci üzerinde başarılı bir giriş veya başarısızlık.

Bu LoginService nasıl çalıştığını ve dahili olarak kullandığı en az ve gizler için benim Denetleyicisi kod temeli tamamen tutar. Temsilci, ayrıca, MVC iyi bir birlikteliğimiz var bu yüzden de çiftler Modelleri arasından Denetleyici ve. Ancak Model sınıfı temsilci tutunarak olduğundan Denetleyici nesne tutucu etkileri hakkında endişe duyuyorum.

RestKit nasıl kullanırsınız ? Eğer benim yaklaşım iyi olduğunu düşünüyorsanız , size daha iyi yapmak için ne değişecek ? Eğer beğenmezseniz yaklaşımımı iyi bir yöntem değil sence neden olarak görüşlerinizi istiyorum.

Kod parçacığını aşağıda bu daha iyi bir fikir verecektir

@protocol LoginServiceDelegate;

@interface LoginService : NSObject <RKRequestDelegate>{
    NSObject<LoginServiceDelegate> *_loginServiceDelegate;

}

@property (retain, nonatomic) NSObject <LoginServiceDelegate> *loginServiceDelegate;

- (id) initWithDelegate:(NSObject<LoginServiceDelegate>*) loginServiceDelegate;

- (void) login:(NSString *)username withPassword:(NSString *)password;

@end

@protocol LoginServiceDelegate
@optional

- (void) loginSuccess:(LoginInfo *) loginInfo;

- (void) loginFailure:(NSString *) message;

@end

!! Şerefe!

CEVAP
14 NİSAN 2011, PERŞEMBE


RestKit ben yazar değilim ve böyle desenler RestKit üstüne yüksek seviyeli soyutlamalar oluşturmak için kullanarak savunuyoruz. Ben genellikle geri inşa etmek ve nesneyi yeni LoginService bir tür oluşturmak yerine model bir nesne etrafında böyle, ama benim için farketmez. Benim örnekte, senin yapacağın şeyler:

@implementation RKUser
- (void)loginWithDelegate:(NSObject<RKUserAuthenticationDelegate>*)delegate {}
@end

@protocol RKUserAuthenticationDelegate
- (void)userDidLogin:(RKUser*)user;
- (void)userDidFailLoginWithError:(RKUser*)user;
- (void)userDidLogout:(RKUser*)user
@end

Her durumda, tavsiye ederim başka bir şey atamak için bir korumak sizin temsilci değişiyor. Dealloc yöntemi, birkaç şey yapabilirsiniz:

  1. Bir geri arama çarpmış şey kadar temsilci sıfır
  2. İstek sırası tüm istekleri iptal etmek isteyebilirsiniz: [[RKRequestQueue sharedQueue] cancelRequestsWithDelegate:self];

Bellek yönetimi / ev tutma açısından hakkında endişelenmenize gerek. Ben genellikle her zaman yapıyoruz bir diğer şey de, benim kimlik doğrulaması için bildirimleri yaşam döngüsü olayları yaratıyor. Sen her zaman onları izlemek için bir yere ihtiyacı UI güncellemek için benim durumumda rüzgar.

Doğru yolda olduğunuzu ve tasarım gayet iyi.

En iyi, Blake

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006