Это означает, что вы либо используете одно и то же имя функции / класса дважды, и вам нужно переименовать один из них, или это потому, что вы использовали require
или include
, где вы должны использовать require_once
или include_once
.
Когда класс или функция объявляется в PHP, он неизменен и не может быть позже объявлен с новым значением.
Рассмотрим следующий код:
class.php
<?php
class MyClass
{
public function doSomething()
{
// do stuff here
}
}
index.php
<?php
function do_stuff()
{
require 'class.php';
$obj = new MyClass;
$obj->doSomething();
}
do_stuff();
do_stuff();
Второй вызов do_stuff()
приведет к получению ошибка выше. Изменяя require
на require_once
, мы можем быть уверены, что файл, содержащий определение MyClass
, будет загружен только один раз, и ошибка будет устранена.
Обычно легче создать запрос как это
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:60.0];
, Тогда создают соединение
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request
delegate:self];
и реализуют connection:willCacheResponse: метод на делегате. Просто возврат ноля должен сделать это.
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {
return nil;
}
Если Вы используете NSURLConnection, смотрят на делегата:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse
Возвращаемое значение
фактический кэшируемый ответ для хранения в кэше. Делегат может возвратить неизмененный cachedResponse, возвратить измененный кэшируемый ответ или ноль возврата, если никакой кэшируемый ответ не должен быть сохранен для соединения.
У меня такая же проблема в приложении, когда я запрашивал информацию из твиттера. В моем случае мне не нужно было сохранять эти учетные данные, поэтому я просто стираю их, используя следующий код:
- (void) eraseCredentials{
NSURLCredentialStorage *credentialsStorage = [NSURLCredentialStorage sharedCredentialStorage];
NSDictionary *allCredentials = [credentialsStorage allCredentials];
//iterate through all credentials to find the twitter host
for (NSURLProtectionSpace *protectionSpace in allCredentials)
if ([[protectionSpace host] isEqualToString:@"twitter.com"]){
//to get the twitter's credentials
NSDictionary *credentials = [credentialsStorage credentialsForProtectionSpace:protectionSpace];
//iterate through twitter's credentials, and erase them all
for (NSString *credentialKey in credentials)
[credentialsStorage removeCredential:[credentials objectForKey:credentialKey] forProtectionSpace:protectionSpace];
}
}
Надеюсь, это сработает для кого-нибудь :)