小编Aar*_*onG的帖子

如何使用posix_spawn替换已弃用的"系统"以在Objective-C中启动opendiff?

这行代码:

system("/Applications/Xcode.app/Contents/Developer/usr/bin/opendiff /Users/LukeSkywalker/Documents/doc1.rtf /Users/LukeSkywalker/Documents/doc2.rtf");
Run Code Online (Sandbox Code Playgroud)

给了我这个警告:

'system' is deprecated: first deprecated in iOS 8.0 - Use posix_spawn APIs instead.
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些关于posix_spawn的内容,但我无法弄清楚使用posix_spawn的等效代码行是什么样的.

任何帮助或样品链接将不胜感激.

posix objective-c opendiff xcode6 ios8

9
推荐指数
1
解决办法
8558
查看次数

使用TWTweetComposeViewController部署目标与基础SDK

我已将基本SDK设置为6.0,将部署目标设置为6.0.

当我构建时,我收到以下错误.不推荐使用'TWTweetComposeViewController':首先在iOS 6.0中弃用

如果我将部署目标降低到5.1,则编译时没有错误.由于TWTweetComposeViewController"在iOS 5.0及更高版本中可用.",这似乎与我的期望相反.

我会这样离开,但我也使用Social/Social.h,它只能在6.0及以上版本中使用,并且对5.1用户来说容易出错.

这是有问题的代码行:

if ([TWTweetComposeViewController canSendTweet]){
Run Code Online (Sandbox Code Playgroud)

把我的大脑放在这上面.我希望这只是我错过的一些模糊的设置.

提前致谢.

xcode ios ios6

3
推荐指数
1
解决办法
2304
查看次数

如何在main.m中调用静态bool方法

这是用于iPhone的Xcode中的Objective-C.

我在main.m中有一个方法:

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//I want to call the method here//

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

static BOOL do_it_all () {
//code here//
}
Run Code Online (Sandbox Code Playgroud)

如何从main.m调用do_it_all方法?

iphone xcode static boolean objective-c

2
推荐指数
1
解决办法
1940
查看次数

如何使用UILabels填充NSMutableArray?

我不认为我正确地创建了这个UILabel数组.

如果我在这行代码后放置断点,则表明该数组为空.

 colorLabelArray = [[NSMutableArray alloc] initWithObjects:  greenLabel, orangeLabel, blackLabel,purpleLabel, yellowLabel, redLabel, blueLabel, whiteLabel, nil];
Run Code Online (Sandbox Code Playgroud)

如果我用UIImages做同样的事情它就可以了.我错过了什么?

arrays iphone objective-c nsmutablearray ipad

2
推荐指数
1
解决办法
289
查看次数

audioPlayerDidFinishPlaying如何知道哪个文件已完成?

我正在使用AVAudioPlayer播放15个音频文件.音频文件需要以5个为一组播放,每组有3个文件.集合中的三个文件不会更改.播放集的顺序可能会发生变化.

我尝试使用isPlaying的while循环,如下所示:

while ([backgroundSound isPlaying]) {
    NSLog(@"First while loop");
}
backgroundSoundPath = [[NSBundle mainBundle] pathForResource:@"Set0File1" ofType:@"mp3"]; // *Music filename* 
backgroundSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:backgroundSoundPath] error:nil];
[backgroundSound prepareToPlay];
[backgroundSound play];
while ([backgroundSound isPlaying]) {
    NSLog(@"Second while loop");
}
backgroundSoundPath = [[NSBundle mainBundle] pathForResource:@"Set0File2" ofType:@"mp3"]; // *Music filename* 
backgroundSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:backgroundSoundPath] error:nil];
[backgroundSound prepareToPlay];
[backgroundSound play];
while ([backgroundSound isPlaying]) {
    NSLog(@"Third while loop");
} 
Run Code Online (Sandbox Code Playgroud)

我现在意识到副作用是错误的,因为整个UI在播放文件的持续时间内被锁定.

我知道我应该使用:

  • (void)audioPlayerDidFinishPlaying :( AVAudioPlayer*)播放器成功:(BOOL)标志

但我不知道audioPlayerDidFinishPlaying应该如何准确知道哪个文件已经播放完毕.

我认为它可能像 - (void)animationDidStop,你可以使用valueForKeyPath来确定哪个文件已经完成播放.

是否必须手动跟踪?

任何建议指出我正确的方向将不胜感激.

谢谢.

iphone objective-c avaudioplayer ios

1
推荐指数
1
解决办法
3412
查看次数