小编use*_*er_的帖子

Swift不会生成未使用的变量警告

在Objective-C中,以下代码生成Unused变量警告:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSInteger unusedVariable;
}
Run Code Online (Sandbox Code Playgroud)

但在Swift中,以下相同的代码不会生成警告:

override func viewDidLoad() {
    super.viewDidLoad()

    var unusedVariable: Int
}
Run Code Online (Sandbox Code Playgroud)

Xcode版本是6.0.1.
Swift项目中的Build Settings> Unused Variables为YES.

这只发生在我身上吗?
如何让Swift或Xcode在Swift中生成未使用的变量警告?

iphone xcode ios swift

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

在iOS 8之后,我可以继续使用UIActionSheet和U​​IAlertView吗?

我有使用UIActionSheet和的应用程序UIAlertView.
在iOS8中,Apple的文档和一些网站称它们在iOS8中被弃用.

UIActionSheet文档
重要:在iOS 8中不推荐使用UIActionSheet.(请注意,UIActionSheetDelegate也已弃用.)要在iOS 8及更高版本中创建和管理操作表,请使用UIAlertController和UIAlertControllerStyleActionSheet的preferredStyle.

但是在Xcode 6中,部署目标8.0不会生成使用UIActionSheet和的警告UIAlertView.
通常,Xcode会为不推荐使用的API生成警告.
为什么Xcode没有为UIActionSheet和生成警告UIAlertView
这是否意味着Apple实际上并没有弃用这些类?
如果他们实际上弃用它们并且Xcode不生成警告,则非常危险.


在另一个苹果的文档"iOS 8.0中的新功能"中说:

UIAlertController类将替换UIActionSheetUIAlertView类作为在应用程序中显示警报的首选方式.

https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html

UIActionSheetUIAlertView未上市的已过时的API上面URL的文档部分.
所以,这意味着文件UIAlertController是首选的,但UIActionSheetUIAlertView还可以买到在IOS 8.

我应该替换UIActionSheetUIAlertView我的应用程序与新的UIAlertController班?
或者,我可以继续使用UIActionSheetUIAlertView

cocoa-touch deprecated uialertview ios ios8

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

即使使用AVAudioTimePitchAlgorithmSpectral,使用AVPlayer慢速播放的声音质量也不够好

在iOS中,可以通过设置更改播放速率AVPlayer.rate。当AVPlayback rate设置为0.5时,播放会变慢。

默认情况下,以0.5播放速率播放的声音质量很差。要提高质量,您需要设置AVPlayerItem.audioTimePitchAlgorithm

根据API文档,将设置AVPlayerItem.audioTimePitchAlgorithmAVAudioTimePitchAlgorithmSpectral使质量最高。

快速代码是:

AVPlayerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithm.spectral // AVAudioTimePitchAlgorithmSpectral
Run Code Online (Sandbox Code Playgroud)

AVAudioTimePitchAlgorithmSpectral增加的质量比默认质量更多。但是的音质AVAudioTimePitchAlgorithmSpectral不够好。声音仍在回响,聆听它的压力很大。

在Apple的Podcast App中,当我将播放速度设置为1/2时,播放速度变慢并且声音质量很高,根本没有回音。

我希望我的应用提供与Apple的Podcast应用相同的质量。

是否有iOS API可以提高音质AVAudioTimePitchAlgorithmSpectral

如果没有,即使他们在自己的Podcast应用中使用它,为什么Apple不提供它?

还是应该使用第三方库?有没有免费或低价的好图书馆,很多人用来改变播放速度?

iphone objective-c ios swift

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

在iPhone应用程序中将文件保存到哪里?库/ vs应用程序支持/,以及子目录vs非子目录

我想将iPhone应用程序的用户设置文件保存在〜/ Library /目录中。
我不想使用〜/ Documents /目录,因为我不希望用户使用文件共享功能查看或修改iTunes中的文件。

但是有4种选择可以将文件保存在〜/ Library /中:

1.〜/ Library / some-data.plist
这使用Library /目录而不在其中创建子目录。
(API常量名称是NSLibraryDirectory)2.〜

/ Library / MyAppName / some-data.plist
这使用Library /目录和一个子目录,该名称是我的应用程序的名称。

3.〜/ Library / Application Support / some-data.plist
这使用Application Support /目录而不在其中创建子目录。
(API常量名称为NSApplicationSupportDirectory)

4.〜/ Library / Application Support / MyAppName / some-data.plist
这使用Application Support /目录和一个子目录,该目录是我的应用程序的名称。

问题

上面每条路径的优缺点是什么?
您将应用程序的数据保存在Library /中的什么位置?

我应该使用〜/ Library /还是〜/ Library / Application Support /?

我应该创建一个子目录还是不应该创建它?
如果我应该创建一个子目录,将应用程序的名称用于子目录是否是一种好习惯?
还是子目录有更好的名称?

iphone xcode ios

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

在Swift中,未来的新API将在App Store的现有应用程序中被用户定义的方法覆盖吗?

例如,在Objective-C中,如果Apple添加了一个名为method1UIView的新方法,那么已经发布到App Store并使用以下代码的现有应用程序可能会崩溃或出现意外行为:

// Objective-C
@interface MyView : UIView
- (void)method1;
@end

// Swift
class MyView : UIView {
    func method1() {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)


但是在Swift中,要覆盖一个方法,你需要一个override关键字来防止意外覆盖.如果覆盖不带override关键字的方法,编译器将生成编译时错误.

如果Apple在下一个iOS版本中添加新的API方法,并且我的应用程序或您的应用程序使用的名称与新API名称相同的方法,将会发生什么.

在Swift中,现有应用程序(如Objective-C)中的方法是否会覆盖新的API方法?
或者,由于Swift的显式覆盖功能(override关键字),新的API不会影响现有的同名用户定义方法?

iphone xcode objective-c ios swift

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

我可以跳过iTunes Connect和Xcode中iPhone应用程序的版本号吗?

我有一个应用程序,其版本号为1.0.0,并且已在App Store上提供。

我可以将应用程序下一版本的版本号设置为3.0.0或4.0.0而不是2.0.0吗?
如果版本号不是连续的,我会遇到问题吗?

是否有关于此的官方文档,或者您知道使用非顺序版本号的应用程序或初始版本以大于1的数字开头的应用程序吗?

iphone xcode itunesconnect ios

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

如何在Swift中使用self进行延迟初始化

有些网站建议使用延迟初始化而不是使用故事板来初始化视图.

self在惰性初始化中不使用时有效.但是当self在其中使用时,会发生编译错误.

例如,在下面的代码中,label1可以成功编译,但label2不能,因为self在其中使用.

如何self在延迟初始化中使用?

class A {
    private let label1: UILabel = {
        return UILabel()
    }()

    private let label2: UILabel = {
        let view = UILabel()
        self.addTextToLabel(view) // compile error !!!
        return view
    }()

    private func addTextToLabel(label: UILabel) {
        label.text = "test"
    }
}
Run Code Online (Sandbox Code Playgroud)

swift

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