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

  • LAHWF

    LAHWF

    5 Kasım 2009
  • PlayStation

    PlayStation

    16 Aralık 2005
  • Titan Lee Hai

    Titan Lee Ha

    14 Temmuz 2008