ARC mit PKRevealController

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ARC mit PKRevealController

    Moin zusammen,

    ich habe ein Problem mit dem Speicher! Ich denke mal, dass es eventuell was damit zu tun hat, dass ich den PKRevealController nutze.

    Ich öffne einen ViewController => Memory Utilized steigt um knapp 10 MB an
    Ich öffne einen andere ViewController => Memory Utilized steigt an, schmeißt den alten dann aber nicht aus dem Speicher

    Woran könnte das liegen oder liegt es vielleicht gar nicht an dem PKRevealController?
    Hat eventuell jemand damit das gleiche Problem?
    Ich nutze natürlich ARC.

    Gruß
    kruemel1770
  • Hier auch nochmal das Object, welches im dem zuerst eingebunden ViewController genutzt wird! Vielleicht ist ja auch dort der Fehler.

    Weather.h:

    Quellcode

    1. @protocol WeatherDelegate <NSObject>
    2. @required
    3. //Start
    4. -(void)wetterdaten_start;
    5. //Fehler
    6. -(void)wetterdaten_fehler;
    7. //Erfolgreich
    8. -(void)wetterdaten_abgerufen;
    9. @end
    10. @interface Weather : NSObject
    11. {
    12. /****** JSON ******/
    13. NSMutableString *urlWetter;
    14. NSURLConnection *urlCon_wetter;
    15. NSMutableData *mD_responseData;
    16. }
    17. //Delegate
    18. @property (nonatomic, retain) id<WeatherDelegate> delegate;
    19. //Status
    20. @property (nonatomic) int status;
    21. //City-ID
    22. @property (nonatomic,retain) NSString *city_id;
    23. @property (nonatomic,retain) NSString *city_name;
    24. //Wetterdaten
    25. @property (nonatomic) int tage;
    26. @property (nonatomic, retain) NSMutableArray *temperatur;
    27. @property (nonatomic, retain) NSMutableArray *windgeschwindigkeit;
    28. @property (nonatomic, retain) NSMutableArray *windrichtung;
    29. @property (nonatomic, retain) NSMutableArray *bewoelkung;
    30. @property (nonatomic, retain) NSMutableArray *luftfeuchtigkeit;
    31. @property (nonatomic, retain) NSMutableArray *wetter_beschreibung;
    32. @property (nonatomic, retain) NSMutableArray *wetter_icon;
    33. @property (nonatomic, retain) NSMutableArray *wetter_id;
    34. @property (nonatomic, retain) NSMutableArray *wetter_hintergrund;
    35. @property (nonatomic, retain) NSMutableArray *wetter_zusammengefasst;
    36. //Wetterdaten abrufen
    37. -(void)wetterdaten_abrufen;
    38. @end
    Alles anzeigen
  • Weather.m:

    Quellcode

    1. #import "Weather.h"
    2. @implementation Weather
    3. @synthesize delegate;
    4. //Wetterdaten abrufen
    5. -(void)wetterdaten_abrufen{
    6. //Delegate
    7. [self.delegate wetterdaten_start];
    8. //Status ermitteln
    9. if ([[Datenbank wetter_zugangsdaten][@"City_Code"] isEqualToString:@""]) {
    10. self.status = 0;
    11. [Datenbank wetterdaten_loeschen];
    12. }
    13. else{
    14. self.status = 1;
    15. self.city_id = [Datenbank wetter_zugangsdaten][@"City_Code"];
    16. self.city_name = [Datenbank wetter_zugangsdaten][@"Ort"];
    17. }
    18. //URL
    19. urlWetter = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/"]];
    20. //Status
    21. switch (self.status) {
    22. //City-ID
    23. case 0:
    24. {
    25. [urlWetter appendString:[NSString stringWithFormat:@"find?q=%@",self.city_name]];
    26. [self request_starten];
    27. }
    28. break;
    29. //Wetter
    30. case 1:
    31. {
    32. if ([Datenbank wetterdaten_vorhanden] == FALSE) {
    33. [urlWetter appendString:[NSString stringWithFormat:@"forecast/daily?id=%@&lang=de&units=metric&cnt=%d",self.city_id,self.tage]];
    34. [self request_starten];
    35. }
    36. else{
    37. [self.delegate wetterdaten_abgerufen];
    38. }
    39. }
    40. break;
    41. default:
    42. break;
    43. }
    44. }
    45. -(void)request_starten{
    46. //APPID
    47. [urlWetter appendString:[NSString stringWithFormat:@"&APPID=%@",Configdatei.weather_appid]];
    48. //UTF-8
    49. NSString *json_request_utf8 = [urlWetter stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    50. //Starten des Request
    51. mD_responseData = [NSMutableData data];
    52. NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:json_request_utf8]];
    53. urlCon_wetter = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    54. }
    55. #pragma mark - NSURLConnection -
    56. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    57. [mD_responseData setLength:0];
    58. }
    59. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    60. [mD_responseData appendData:data];
    61. }
    62. - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    63. [self.delegate wetterdaten_fehler];
    64. }
    65. - (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    66. NSString *responseString = [[NSString alloc] initWithData:mD_responseData encoding:NSUTF8StringEncoding];
    67. SBJsonParser *parser = [[SBJsonParser alloc] init];
    68. NSDictionary *json = [parser objectWithString:responseString];
    69. //Status
    70. switch (self.status) {
    71. //City-ID
    72. case 0:
    73. {
    74. if ([json[@"count"] intValue] == 0) {
    75. [self.delegate wetterdaten_fehler];
    76. }
    77. else{
    78. self.city_id = [NSString stringWithFormat:@"%@",json[@"list"][0][@"id"]];
    79. //Speichern
    80. [Datenbank wetter_ort_speichern:self.city_name setCode:self.city_id];
    81. self.status = 1;
    82. [self wetterdaten_abrufen];
    83. }
    84. }
    85. break;
    86. //Wetter
    87. case 1:
    88. {
    89. //Temperatur
    90. self.temperatur = [[NSMutableArray alloc] init];
    91. //Windgeschwindigkeit
    92. self.windgeschwindigkeit = [[NSMutableArray alloc] init];
    93. //Windrichtung
    94. self.windrichtung = [[NSMutableArray alloc] init];
    95. //Bewölkung
    96. self.bewoelkung = [[NSMutableArray alloc] init];
    97. //Luftfeuchtigkeit
    98. self.luftfeuchtigkeit = [[NSMutableArray alloc] init];
    99. //Wetter
    100. self.wetter_beschreibung = [[NSMutableArray alloc] init];
    101. self.wetter_icon = [[NSMutableArray alloc] init];
    102. self.wetter_id = [[NSMutableArray alloc] init];
    103. self.wetter_hintergrund = [[NSMutableArray alloc] init];
    104. self.wetter_zusammengefasst = [[NSMutableArray alloc] init];
    105. for (int i = 0; i < self.tage; i++) {
    106. /****** Temperatur ******/
    107. NSMutableDictionary *dict_tagestemperatur = [[NSMutableDictionary alloc] init];
    108. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"day"] floatValue])] forKey:@"day"];
    109. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"eve"] floatValue])] forKey:@"eve"];
    110. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"max"] floatValue])] forKey:@"max"];
    111. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"min"] floatValue])] forKey:@"min"];
    112. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"morn"] floatValue])] forKey:@"morn"];
    113. [dict_tagestemperatur setObject:[NSString stringWithFormat:@"%.0f",([json[@"list"][i][@"temp"][@"night"] floatValue])] forKey:@"night"];
    114. [self.temperatur addObject:dict_tagestemperatur];
    115. /****** Windgeschwindigkeit ******/
    116. [self.windgeschwindigkeit addObject:json[@"list"][i][@"speed"]];
    117. /****** Windrichtung ******/
    118. [self.windrichtung addObject:[self windrichtung_auslesen:[json[@"list"][i][@"deg"] floatValue]]];
    119. /****** Bewölkung ******/
    120. [self.bewoelkung addObject:json[@"list"][i][@"clouds"]];
    121. /****** Luftfeuchtigkeit ******/
    122. [self.luftfeuchtigkeit addObject:json[@"list"][i][@"humidity"]];
    123. /****** Wetter ******/
    124. [self.wetter_beschreibung addObject:json[@"list"][i][@"weather"][0][@"description"]];
    125. [self.wetter_icon addObject:[self wettericon_umformen:json[@"list"][i][@"weather"][0][@"icon"]]];
    126. [self.wetter_id addObject:json[@"list"][i][@"weather"][0][@"id"]];
    127. [self.wetter_hintergrund addObject:[self wetterhintergrund_umformen:json[@"list"][i][@"weather"][0][@"icon"]]];
    128. [self.wetter_zusammengefasst addObject:json[@"list"][i][@"weather"][0][@"main"]];
    129. }
    130. //Datenbank
    131. [Datenbank wetterdaten_speichern_setTemperatur:self.temperatur
    132. setWindgeschwindigkeit:self.windgeschwindigkeit
    133. setWindrichtung:self.windrichtung
    134. setBewoelkung:self.bewoelkung
    135. setLuftfeuchtigkeit:self.luftfeuchtigkeit
    136. setWetter_Beschreibung:self.wetter_beschreibung
    137. setWetter_Icon:self.wetter_icon
    138. setWetter_ID:self.wetter_id
    139. setWetter_Zusammengefasst:self.wetter_zusammengefasst
    140. setWetter_Hintergrund:self.wetter_hintergrund];
    141. //Delegate
    142. [self.delegate wetterdaten_abgerufen];
    143. }
    144. break;
    145. default:
    146. break;
    147. }
    148. }
    149. @end
    Alles anzeigen