Не ваш обычный «класс» может не отвечать на предупреждение «метод» - iPhone / Objective-C - PullRequest
0 голосов
/ 26 ноября 2010


Я знаю, что вы, должно быть, уже видели это предупреждение и слишком часто принимаете решение, но мой случай немного особенный.
Я получаю предупреждение только для одного класса, но всего (импорт, реализация, header-file и т. д.) установлены правильно.Я уже некоторое время кодирую Objective-C в XCode и скажу для себя, что заработал достаточно опыта в программировании для iPhone.Я полностью уверен, что все в порядке.
Кажется, что XCode почему-то не распознал изменения, которые я сделал в классе.Он даже предлагает некоторые методы, которых больше нет в этом классе.Я проверил проект на другом Mac и собрал его там, и все было нормально, никаких предупреждений.
Я не хочу переустанавливать XCode, чтобы избавиться от этих надоедливых предупреждений, которых не должно быть.Любые предложения о том, как сказать XCode, что он должен купить себе очки?Помощь очень ценится =)

РЕДАКТИРОВАТЬ: Хорошо, просто чтобы никто не мог сказать, я сумасшедший или что-нибудь, вот код и небольшое объяснение в конце:

#import <Foundation/Foundation.h>


@interface URLConnection : NSObject {
NSString *theURL;
NSMutableData *receivedData;
id delegate; // delegate needed for handling response
}

@property (nonatomic, retain) NSMutableData *receivedData;
@property (retain) id delegate;

- (NSData*) sendSynchronousRequest:(NSData*)_postData;
- (void) sendRequest:(NSData*)_postData;

- (void)setDelegate:(id)val;
- (id)delegate;

@end

#import "URLConnection.h"


@implementation URLConnection

@synthesize receivedData, delegate;


- (id) init
{
if (self = [super init]) {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (![[defaults stringForKey:@"bankurl"] isEqualToString:@"<Custom URL>"]) {
        theURL = [[defaults stringForKey:@"bankurl"] retain];
    } else {
        theURL = [[defaults stringForKey:@"bankurl_list"] retain];
    }
    receivedData = [[NSMutableData alloc] init];
}
return self;
 }

 - (void)setDelegate:(id)val
 {
    delegate = val;
 }

 - (id)delegate
 {
return delegate;
 }


 /* send a synchronous request (specified for xml documents) */
 - (NSData*) sendSynchronousRequest:(NSData*)_postData
 {
NSString *_urlString = theURL;
NSMutableURLRequest *_urlRequest = [[NSMutableURLRequest alloc] init];
[_urlRequest setURL:[NSURL URLWithString:_urlString]];
[_urlRequest setHTTPMethod:@"POST"];
[_urlRequest setValue:@"text/xml" 
   forHTTPHeaderField:@"Content-Type"];
[_urlRequest setHTTPBody:_postData];

// response
NSHTTPURLResponse *_urlResponse = nil;
NSError *_error = [[NSError alloc] init];
NSData *_responseData = [NSURLConnection sendSynchronousRequest:_urlRequest 
                                              returningResponse:&_urlResponse 
                                                          error:&_error];
[_urlRequest release];
NSString *_result = [[NSString alloc] initWithData:_responseData 
                                          encoding:NSUTF8StringEncoding];
NSLog(@"Response code: %d", [_urlResponse statusCode]);
if ([_urlResponse statusCode] >= 200 && [_urlResponse statusCode] < 300) {
    NSLog(@"Response: %@", _result);
}
return _responseData;
}


/* send an asynchronous request (specified for xml documents) */
- (void) sendRequest:(NSData*)_postData
{
NSMutableURLRequest *_urlRequest = [[NSMutableURLRequest alloc] init];
[_urlRequest setURL:[NSURL URLWithString:theURL]];
[_urlRequest setHTTPMethod:@"POST"];
[_urlRequest setValue:@"text/xml" 
   forHTTPHeaderField:@"Content-Type"];
[_urlRequest setHTTPBody:_postData];

[[NSURLConnection alloc] initWithRequest:_urlRequest delegate:self];
[_urlRequest release];
 }


 /* 
  * NSURLRequest Delegate
  * if a response comes back, clear receivedData to make room for the response data
  */
 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
 {
[receivedData setLength:0];
 }


/* 
 * NSURLRequest Delegate
 * if data is received, append the chunk of data to receivedData
 */
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
}


/* 
 * NSURLRequest Delegate
 * when all response data has been stored, call didFinishDownload() in the class
 * which set itself as the delegate
 */
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{
[delegate didFinishDownload:receivedData];

[connection release];
//[receivedData release];
}



- (void) dealloc
{
[theURL release];
theURL = nil;
[super dealloc];
}

@end

Прежде всего, да, я знаю, что строка "[Delegate didFinishDownload: receiveData];"будет выдавать предупреждения, но это не та проблема, о которой я пишу.Когда я нажимаю alt + esc, чтобы увидеть предложения методов, в списке есть все вышеперечисленное, а также «sendRequest: theURL:» и «sendMail:», которые были удалены очень давно.

Ответы [ 4 ]

0 голосов
/ 26 ноября 2010

Вы абсолютно уверены, что у вас нет другой копии этого заголовка где-нибудь на вашем компьютере, которую xcode может найти до того, как найдет самую последнюю копию?

0 голосов
/ 26 ноября 2010

Xcode (меню приложения) -> Пустые кеши ...

0 голосов
/ 26 ноября 2010

- Удалить свою сборку из папки, в которую вы сохраняете приложение, - удалить из симулятора или устройства. - очистить все цели. --click xcode затем очистить кеши ...

Теперь без предупреждения вы увидите.

0 голосов
/ 26 ноября 2010

Вы сделали Clean All Targets?(Это в меню сборки Xcode.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...