myDataTask has a block which retains self, and self retains myDataTask leading to a cycle, would be my first thought. If nothing else also holds onto that, you'd expect leaks to find it and give you a nice diagram showing how it all hangs together, I believe leaks tracks dispatch_* (although I've never tried it, they are full ARC'y objects now).
On 21 Apr, 2014, at 8:27 pm, Dave <d...@looktowindward.com> wrote: > > On 21 Apr 2014, at 12:04, Roland King <r...@rols.org> wrote: > >> >> On 21 Apr, 2014, at 6:45 pm, Dave <d...@looktowindward.com> wrote: >> >>> >>> It does use isKindOfClass, I wasn’t trying to be 100% correct on the fluff, >>> just showing giving an example of the type of thing going in in property >>> assignment. >>> >>> I didn’t write that part it was like that and by all account it sort of >>> worked. >>> >>> I may just revert back to the non-ARC version do manual Memory Management >>> as ARC seems very difficult to debug, especially since you can’t get at >>> things like “retainCount” or override “retain”, “release” etc. >>> >> >> It's not really hard to debug, it's just different. retainCount never was a >> very good indicator of what was going on anyway. I really do suggest using >> Instruments, that even pairs up retains and releases for you in the detailed >> logging so you can often figure out what the dangling one is. > > I’ll have a look, because it is a bit of a retrograde step to get rid of ARC > now that I’ve gone to all the trouble of converting it. > > I found using retainCount in conduction with some overrides worked > wonderfully for me, but I’ll have a go using instruments. One of the things > that I can’t seem change is that whenever I run the Profile, it selects an > iPad retina instead of a normal iPad which takes up the while screen. I’ll > have another go and try to get it to work on the normal iPad. > > Here is an extract of one of the methods I suspect of being the root cause. > I’m wondering if something is wrong with the wat the Code Block works. I > haven’t changed that bit, just made it ARC (which is why you will see some > releases commented out). Also, when I did this, I left the property > attributes as “retain” and “assign”, I’m wondering if it would be better to > change them to “strong” and “weak” ? Although, AFAIK this shouldn’t make a > difference? > > -(JMNetworkCommandResponse*) > executeSyncRequestWithParameters:(JMNetworkRequestParams*) > theRequestParameters > { > JMNetworkCommandResponse* myNetworkResponse; > long > myTimeOutStatus; > dispatch_group_t > myDispatchGroup; > NSURL* > myURL; > NSMutableURLRequest* myURLRequest; > NSURLSessionDataTask* myDataTask; > NSString* > myParameterString; > NSData* > myBodyData; > JMNetworkRequestHTTPDataMethod myTransferMethod; > JMNetworkOperationiOS7* > myNetworkOperation; > > myURL = [[NSURL alloc] initWithString:theRequestParameters.pRequestURLString]; > if (myURL == nil) > return nil; > > myNetworkOperation = [self > newOperationWithRequestParameters:theRequestParameters]; > > myDispatchGroup = dispatch_group_create(); > dispatch_group_enter(myDispatchGroup); > > myDataTask = [self.pNetworkCommandURLSession dataTaskWithURL:myURL > completionHandler:^(NSData* theResponseData,NSURLResponse* > theURLResponse,NSError* theErrorInfo) > { > JMNetworkCommandResponse* myNewNetworkResponse; > NSHTTPURLResponse* > myHTTPURLResponse; > NSInteger > myHTTPStatus; > > myHTTPURLResponse = (NSHTTPURLResponse*) theURLResponse; > myHTTPStatus = myHTTPURLResponse.statusCode; > > myNewNetworkResponse = [self > newNetworkResponseWithRequestParameters:theRequestParameters > andURLResponse:theURLResponse andResponseData:theResponseData > andErrorInfo:theErrorInfo]; > [self setNetworkResponse:myNewNetworkResponse > withRequestID:theRequestParameters.pRequestID]; > > [myNetworkOperation.pResponseNetworkDelegate > performDelegateSelectorOnMainThreadWithObject:myNewNetworkResponse]; > > dispatch_group_leave(myDispatchGroup); > } > ]; > > [myDataTask resume]; > > // dispatch_release(myDispatchGroup); > > //** > //** Extract the Response from the Dictionary and Reset the Request > //** > myNetworkResponse = [self > getNetworkResponseWithRequestID:theRequestParameters.pRequestID]; > [self removeNetworkResponseWithRequestID:theRequestParameters.pRequestID]; > > return myNetworkResponse; > } > > > Thanks a lot > Dave > > > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org > > This email sent to r...@rols.org _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com