Bu soruyla karşılaşan herkes, Matt'in gözleminin en yeni facebook-iphone-sdk için geçerli olmadığını gösteriyor.
+ (FBRequest *)getRequestWithParams:(NSMutableDictionary *) params
httpMethod:(NSString *) httpMethod
delegate:(id<FBRequestDelegate>) delegate
requestURL:(NSString *) url {
FBRequest* request = [[[FBRequest alloc] init] autorelease];
request.delegate = delegate;
request.url = url;
request.httpMethod = httpMethod;
request.params = params;
request.connection = nil;
request.responseText = nil;
Yani yetki verilen kişi için bellek yönetimi .h dosyasında geri mülkiyet beyanı düşüyor: parametreleri artık açıkça alakalı yöntemde korunur
@property(nonatomic,assign) id<FBRequestDelegate> delegate;
Bu çarpışma şimdi olduğu anlamına gelir Temsilci nesnesi, FBRequest tamamlanmadan önce ayrılabildiğinden mümkündür.
Güncelleme: Geçici bir bekleyen FBRequests iptalini sağlamak için this söz konusu sürülmektedir
.
Güncelleme 2:
temsilci FBRequest tamamlanmadan önce, size temelde Matt anlaşılacağı budur (temsilci ayırması gibi aktif FBRequest bağlantısını iptal gerekir ayırmanın alır durumunda bir çarpışma önlemek için bağlantılı soruda). Ancak (bunun yeni olup olmadığından emin değilim), bunu doğrudan NSURLConnection özelliğini gösterdiğinden FBRequest'e yapabilirsiniz.bir mülkte sizin FBRequest nesneyi korumak Yani, eğer:
self.myRequest = [facebookObj requestWithGraphPath:@"me" andDelegate:self];
Eğer dealloc şeyi temizleyebilir:
- (void)dealloc
{
if(myRequest) {
[[myRequest connection] cancel];
[[myRequest release];
}
...
[super dealloc];
}
istek nesnesi
@property (nonatomic, retain) FBRequest *myRequest;
ve kaydedin Eğer aradığınız zaman
Açıkçası, yanıtı işledikten sonra muhtemelen FBEquest özelliğini de delege yöntemlerinde serbest bırakmanız ve sıfırlamanız gerekir.
Teşekkürler, Günümü kurtardın. –