uniqueIdentifier устарел, пример из Cocos2d - PullRequest
1 голос
/ 27 ноября 2011

Я искал ответ в Интернете и нашел довольно много решений, но должен признать, что я не совсем понимаю, как я новичок, как применить ответ, один пример: UIDevice uniqueIdentifier Устаревший - Что теперь делать?

Я был бы очень признателен, если бы кто-нибудь показал мне пример того, как применить решение к проблеме, в приведенном ниже коде, поскольку следующая строка устарела (uniqueIdentifier), строка кода взята из Cocos2d CLScoreServerRequest.m, но появляется в также несколько других:

device = [[UIDevice currentDevice] uniqueIdentifier];

Функция выглядит так:

-(BOOL) requestScores:(tQueryType)type
            limit:(int)limit
           offset:(int)offset
            flags:(tQueryFlags)flags
         category:(NSString*)category
{
// create the request   
[receivedData setLength:0];

// it's not a call for rank
reqRankOnly = NO;

NSString *device = @"";
if( flags & kQueryFlagByDevice )
    device = [[UIDevice currentDevice] uniqueIdentifier];

// arguments:
//  query: type of query
//  limit: how many scores are being requested. Default is 25. Maximun is 100
//  offset: offset of the scores
//  flags: bring only country scores, world scores, etc.
//  category: string user defined string used to filter
NSString *url= [NSString stringWithFormat:@"%@?gamename=%@&querytype=%d&offset=%d&limit=%d&flags=%d&category=%@&device=%@",
                SCORE_SERVER_REQUEST_URL,
                gameName,
                type,
                offset,
                limit,
                flags,
                [category stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding],
                device
                ];

//  NSLog(@"%@", url);

NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:url]
                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                   timeoutInterval:10.0];

// create the connection with the request
// and start loading the data
self.connection=[NSURLConnection connectionWithRequest:request delegate:self];
if (! connection_)
    return NO;

return YES;
}

Ответы [ 2 ]

5 голосов
/ 28 ноября 2011

Вот быстрое и простое решение:

Измените цель развертывания вашего проекта (или цели) на iOS 4.x или ниже. В этом случае компилятор все равно выдаст предупреждение, но это будет просто предупреждение. Только если ваша цель развертывания - iOS 5.0 или новее, компилятор выдаст ошибку об устаревшем методе.

Что касается предупреждений в исходном коде Cocos2D, игнорируйте эти предупреждения до тех пор, пока следующий официальный выпуск Cocos2D не устранит эту проблему.

1 голос
/ 27 ноября 2011

вы могли бы сделать:

CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
if(uuidRef)
{
    device = (NSString *) CFUUIDCreateString(kCFAllocatorDefault, uuid);
    CFRelease(uuidRef);
} else {
    // it's almost 100% likely you won't end up here but
    // you should still do something with device (like throw an alert or NSLog)
}

И я только что заметил, что этот ответ также можно найти в этом связанном вопросе .

B.T.W., Этот UUID не будет сохраняться (или быть прежним), если приложение будет удалено и повторно установлено на устройстве. Если вы хотите что-то подобное, добавьте код, найденный по адресу:

https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5

За исключением этого случая, очевидно, существует жесткое лицензионное соглашение.

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