Я знаю, что вы, должно быть, уже видели это предупреждение и слишком часто принимаете решение, но мой случай немного особенный.
Я получаю предупреждение только для одного класса, но всего (импорт, реализация, 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:», которые были удалены очень давно.