- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
+ (void) playMovieWithResourceFile: (NSString *) file
{
const char *source = [ file cStringUsingEncoding: [NSString defaultCStringEncoding] ];
size_t length = strlen( source );
char *str = malloc( sizeof( char) * (length + 1) );
memcpy( str, source, sizeof (char) * (length + 1) );
char *type = strstr( str, ".");
*type = 0;
type++; //< now we have extension in type, and name in str cStrings
NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSString *sName, *sType;
sName = [ NSString stringWithUTF8String: str ];
sType = [ NSString stringWithUTF8String: type];
[self playMovieWithName: sName Type: sType];
// free str, but do not free type - it is a part of str
free( str );
[pool release];
}
Вроде бы серьезный проект cocos2d-extensions https://github.com/cocos2d/cocos2d-iphone-extensions
Отрезаем расширение у файла :)
Или я что-то не понимаю…
krypt 22.01.2013 18:51 # 0
bormand 22.01.2013 19:39 # +2
Автор пишет так, как будто в NSString нет какого-нибудь substring'а. Я вот objective C совершенно не знаю, но предполагаю, что он там есть. А в лучшем случае там где-то в модулях есть и разбиение пути на папку, имя файла и расширение...
> free str, but do not free type - it is a part of str
Какой дельный комментарий, я бы никогда не догадался об этом из строки 9, и освободил type...
TarasB 22.01.2013 20:43 # 0
bormand 22.01.2013 21:03 # 0
Разбиение строки на две путем выкалывания байта. Чем не байтоёбство?
TarasB 22.01.2013 21:05 # 0
bormand 22.01.2013 21:15 # +1
Тупой как валенок код с двумя сабстрингами в данном случае был бы и проще, и понятней и эффективней.
Каждому алгоритму есть своё место.
3.14159265 22.01.2013 22:03 # +1
LispGovno 23.01.2013 00:21 # −3
Yuuri 24.01.2013 13:15 # +1
LispGovno 24.01.2013 15:47 # 0