我已经开始使用Xcode 4.2开发我的第一个iOS应用程序,并且使用"实用程序应用程序"模板(FlipsideViewController附带的模板)定位iOS 5.0.
我读到,因为ARC是一个编译时功能,它也应该与iOS 4兼容,所以我试图将我的应用程序定位到4.3,并尝试编译它.当我这样做时,我收到此错误:
FlipsideViewController.m:错误:自动引用计数问题:当前部署目标不支持自动__weak引用
它引用了这一行:
@synthesize delegate = _delegate;
Run Code Online (Sandbox Code Playgroud)
该变量声明为:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
我知道iOS 4中不支持"弱引用",但我真的不明白为什么我想要使用弱引用开始,也不能弄清楚如何重写以避免使用它,同时仍然利用ARC(毕竟,它应该适用于iOS 4和5吗?)
我有一个Node.js支持的网站,我在Amazon Elastic Beanstalk上运行.
我的Node.js应用程序侦听端口8080,我在我的EB应用程序中使用nginx弹性负载均衡器配置,在端口80和443上侦听HTTP和HTTPS.
但是,我只想接受通过HTTPS发送的应用中的流量.
我可以在应用程序中安装一些东西来解决这个问题,但是我有兴趣让负载均衡器通过HTTPS将所有HTTP请求重定向到我的站点.
nginx amazon-ec2 amazon-web-services amazon-elastic-beanstalk
我正在使用基于IntelliJ的谷歌Android Studio 0.1,我无法弄清楚如何在我的项目中添加额外的SDK.
我将现有项目从Eclipse导出到Gradle项目,我将其导入Android Studio,这是Google推荐的.
我的项目的SDK是Google API 2.3.3.但是,我使用一个名为PullToRefresh的库,它似乎需要SDK 4.1,所以我试图将SDK 16添加到我的项目中.
我已经确定使用SDK管理器下载SDK.这些SDK会自动添加到Android Studio.app的sdk文件夹中.
我打开了Project Structure窗口,点击了Platform Settings下的"SDKs",我现在看到了JDK 1.7和Google API 2.3.3.我单击该列表上方的+号以添加新SDK.然后我导航到具有android-16的sdk目录,如下面的屏幕截图所示.我不太确定这要我添加什么,但我突出显示了android-16文件夹(我唯一可以选择的东西),当我点击"选择"时,窗口消失,但没有新的SDK出现在SDK列表.
这是我的SDK Manager视图的屏幕截图,显示已安装的SDK:
我正在本地化我的iOS应用程序,并且在模拟器中它每次都以我选择的语言正确运行.
在我的iPhone 5上进行测试时,它只会在应用首次运行时正确检测语言.每次我在设备上重新编译并运行我的应用程序时,它会检测到"en"作为语言,即使我选择了Español("es")进行测试.
我使用以下方法检测语言:
[[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]
我也用过:
[[NSLocale preferredLanguages] objectAtIndex:0]
结果相同.
如果我在第一次运行后终止应用程序,并在设备上重新启动它,它会继续正确检测语言.
但是如果我杀死应用程序然后在初始运行后通过Xcode重新编译/重新启动,它将加载"en"(英语)而不是检测到.
之后,杀死并重新启动应用程序会持续检测为英语,除非我完全删除应用程序,并通过Xcode重新编译/重新安装/运行应用程序.然后循环重复...后续重建/重启而不首先从设备中删除应用程序导致错误检测.
我的设备上的所有其他应用程序一直显示西班牙语.整个UI以西班牙语显示.
更新:我现在已经在运行iOS 6的iPad(第3代)上进行了测试,并且遇到了相同的行为.
更新2:
在didFinishLaunchingWithOptions中,我有这个代码来检测语言:(语言是NSString*):
language = [[NSLocale preferredLanguages] objectAtIndex:0];
接下来是这个调试语句,比较我得到的值,以及稍微不同的检测方式,仅用于调试:
NSLog(@"Detected language: %@ / %@", language, [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]);
当应用程序在西班牙语模式下正常工作时,输出显示为"检测到的语言:es/es",然后显示为"检测到的语言:en/en".仍然不知道为什么它决定加载为英语有时......
更新4:我感谢大家的答案,我尝试了各种建议.不幸的是,我无法奖励+100赏金,因为没有任何建议似乎解决了这个问题.如果某人确实找到了适合我的解决方案,那么我将在那时再向他们奖励+50赏金.
更新5:我已经从Xcode 4.5更新到4.5.2,并遇到了同样的问题.
更新6:我现在已经从头开始创建了一个新的测试项目,它工作得很好!显然,我的项目布局方式或者可能是其中一个数据文件中的某些内容必定是错误的.我想我的下一个旅程将是从头开始重新创建项目,逐个复制文件数据......
更新7(稍后):可悲的是,在通过精心重建我的项目暂时解决(看似)之后,我再次面临这个问题.在第一次加载时,语言被正确呈现,但在后续加载时,它将恢复为英语.
已解决请参阅下面的最终解决方案.感谢大家的帮助.我可能会拿出一些赏金,因为无论如何它都会浪费掉.
我们正在使用FontAwesome和Bootstrap.但是,当我们尝试将FA与我们的自定义minifier一起使用时,它会尝试从相对路径加载字体,这会返回404,这是由于设置了缩小的URL结构的方式.
因此我们认为解决此问题的最佳方法是在我们的minify列表中添加一个额外的CSS文件,该文件将覆盖FontAwesome字体使用的@ font-face src URL.我们基本上只是从FontAwesome复制了@ font-face定义,并指定了绝对URL位置.
但是,现在发生的是我们正确的URL加载字体并尝试从FontAwesome CSS中最初指定的URL(导致与以前相同的404错误).
我们做错了什么,或者真的没有办法覆盖@ font-face src URL,以便完全忽略'upstream'定义?
我有一个使用Nuget的Visual Studio 2013项目.我在解决方案的根目录中有一个packages.config文件,定义了我们想要安装的Nuget包.我还在解决方案的根目录中有一个nuget.config文件,定义了packageSources,以及一些packageSourceCredentials.其中一个包源是我们公司的私人回购.
如果我在解决方案的根目录中打开命令提示符,并键入nuget restore
它工作正常,并能够访问我们的私人存储库以拉入我们使用的一些自定义包.
但是,如果我在Visual Studio 2013中打开解决方案并构建它,则在尝试下载我们的自定义程序包时会失败,因为它显然忽略了我们的nuget.config文件,因此不知道我们的私有nuget repo.
我可以进入工具>选项并添加我们的私人仓库,但我们正在尝试在解决方案本身内做所有事情,这样它就可以开箱即用而无需自定义配置.
为什么VS 2013会忽略nuget.config?
我有一个通过解析一些JSON文本创建的JObject(使用JSON.Net).我正在直接操作,在这个JObject的顶层添加键.当我添加的值是一个字符串时,我没有问题:
json["newkey"] = "New Value"; // works
Run Code Online (Sandbox Code Playgroud)
但如果我能弄清楚如何添加词典,我会被诅咒,例如:
Dictionary<string,string> dict = new Dictionary<string,string>();
dict["one"] = "1";
dict["two"] = "2";
json["dict"] = dict; // fails
Run Code Online (Sandbox Code Playgroud)
我已经完成了相当多的谷歌搜索和阅读JSON.Net文档,但一切似乎都是将JSON文本理解为JObject,或者使用序列化将.NET对象编写为JSON文本.或者使用一些花哨的LINQ语句来处理复杂对象的各种事情......
我试过这些,没有一个有效:
json["dict"] = new JObject(dict);
json["dict"] = new JObject((Dictionary<string,string>)dict);
json["dict"] = new JArray(dict); // desperation sets in :)
json["dict"] = (JObject)dict; // please dear god let this work
Run Code Online (Sandbox Code Playgroud)
我遇到的大多数最新错误是:
无法确定类型System.Collections.Generic.KeyValuePair`2 [System.String,System.String]的JSON对象类型.
我有一个顶级的_Layout.cshtml,看起来像这样:
<html>
<head>
@RenderSection("Header", required: false)
</head>
<body>
@RenderSection("LeftPane", required: false)
@RenderSection("RightPane", required: false)
@RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我有两个"子布局".一个只定义LeftPane部分,另一个定义LeftPane和RightPane.这些子布局称为_LeftPane.cshtml和_LeftPlusRightPane.cshtml,它们的布局设置为"_Layout.cshtml".
然后在每个View .cshtml文件中,我将Layout设置为_LeftPane.cshtml或_LeftPlusRightPane.cshtml,具体取决于我想要在页面上显示的内容.
一切正常.问题出在我<head>
在文档部分添加的新"标题"部分.此部分未在子布局中定义,而是在实际视图中定义.当我尝试以这种方式查看某些内容时,我收到错误:
已定义以下部分,但尚未针对布局页面"〜/ Views/Shared/_LeftPlusRightPane.cshtml":"Header"进行渲染.
我不想在子布局中渲染Header部分,我想在_Layout.cshtml文件中渲染它.如何从低级视图,子布局到顶部_Layout"通过"定义的标题部分?
我在我的应用程序的注册过程中使用Twitter登录.而且我要求用户的电子邮件.一旦我得到它,我想呈现一个UIAlertController.
这是我的代码:
func askForTWMail(){
if (Twitter.sharedInstance().session() != nil) {
let shareMailVC=TWTRShareEmailViewController(completion: {(mail:String!, error:NSError!) in
if (mail != nil) {
print("GOT MAIL: \(mail)")
self.gotMail()
}else{
print("MAIL VC ERROR: \(error)")
}
})
println("PRESENT MAIL VC")
self.presentViewController(shareMailVC, animated: true, completion: nil)
}else{
println("User not logged in")
}
}
func gotMail(){
var alertController=UIAlertController(title: "Some title", message: "Some message", preferredStyle: UIAlertControllerStyle.Alert)
var okAction=UIAlertAction(title:"Yes", style: UIAlertActionStyle.Default) {
UIAlertAction in
//some action
}
var cancelAction=UIAlertAction(title:"No", style: UIAlertActionStyle.Cancel){
UIAlertAction in
//some action
}
alertController.addAction(okAction)
alertController.addAction(cancelAction)
self.presentViewController(alertController, animated: true, …
Run Code Online (Sandbox Code Playgroud) 我在为iOS 8+构建的Swift应用程序中使用WKWebView.我在我的应用程序中的各种视图中使用WKWebView实例,例如在我的选项卡视图控制器的每个选项卡中,该界面基于WKWebView.
我和我的测试人员已经注意到这些视图有时会完全消失,在研究了这个问题之后,似乎WKWebView可能会崩溃,而空白视图就是结果.幸运的是,由于WKWebView的运行方式,它并没有降低应用程序,但我也不清楚如何捕获/记录导致崩溃的原因的信息(如果这实际上是发生了什么).
如何确定WKWebView是否/为何崩溃?
我目前解决的问题是我使用KVO(实际上是Facebook的KVOController)来监视WKWebView的"URL"属性,如果它从非零到nil,我认为发生了崩溃,我重新加载webview:
kvoController?.observe(webView, keyPath: "URL", options: NSKeyValueObservingOptions.New|NSKeyValueObservingOptions.Old) { (areaViewController, webView, change) -> Void in
if change[NSKeyValueChangeNewKey] is NSNull && !(change[NSKeyValueChangeOldKey] is NSNull) {
areaViewController.setup() // reload our webview
}
}
Run Code Online (Sandbox Code Playgroud)
但显然找出崩溃的根本原因会很好.
ios ×4
amazon-ec2 ×1
android ×1
asp.net-mvc ×1
css ×1
email ×1
font-awesome ×1
iphone ×1
json.net ×1
localization ×1
nginx ×1
nuget ×1
razor ×1
swift ×1
twitter ×1
wkwebview ×1
xcode4 ×1