小编Ale*_*akh的帖子

在调用AUGraphStart进行播放时接收kAUGraphErr_CannotDoInCurrentContext

我正在使用AUGraphAudio Units API在我的iOS应用中播放和录制音频.现在,当一个AUGraph无法启动以下错误时,我遇到了一个罕见的问题:

result = kAUGraphErr_CannotDoInCurrentContext(-10863)

当我们尝试调用AUGraphStart为音频播放设置的时间时,错误发生了不可预测的错误:

(BOOL)startRendering
{
    if (playing) {
        return YES;
    }

    playing = YES;

    if (NO == [self setupAudioForGraph:&au_play_graph playout:YES]) {
        print_error("Failed to create play AUGraph",0);
        playing = NO;
        return NO;
    }

    //result = kAUGraphErr_CannotDoInCurrentContext (-10863)
    OSStatus result = AUGraphStart(au_play_graph);
    if (noErr != result) {
        print_error("AUGraphStart", result);
        playing = NO;
    }

    return playing;
}
Run Code Online (Sandbox Code Playgroud)

这是我们从文档中得到的:

为了避免在渲染线程中旋转或等待(一个坏主意!),许多对AUGraph的调用都可以返回:kAUGraphErr_CannotDoInCurrentContext.仅当从其渲染回调调用AUGraph API时才会生成此结果.这意味着它所需的锁在那时由另一个线程保持.如果您看到此结果代码,通常可以再次尝试操作 - 通常是NEXT渲染周期(因此同时可以清除锁定),或者您可以将该调用委托给应用程序中的另一个线程.你不应该旋转或暂停渲染线程.

此结果代码只是一种暂时状态,只要您的其他线程对AUGraph(具有锁定)的调用完成,它就会通过.

在我的情况下,我只是开始AUGraph,它是新的,刚刚创建.如何调试案例以及可能存在的潜在问题?

audiotoolbox audiounit ios

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

在JSON.NET数据解析期间忽略解析错误

我有一个预定义数据结构的对象:

public class A
{
    public string Id {get;set;}
    public bool? Enabled {get;set;}
    public int? Age {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

和JSON应该是

{ "Id": "123", "Enabled": true, "Age": 23 }
Run Code Online (Sandbox Code Playgroud)

我想以积极的方式处理JSON错误,并且每当服务器返回已定义数据类型的意外值时,我希望它被忽略并且默认值被设置(null).

现在,当JSON部分无效时,我收到JSON读卡器异常:

{ "Id": "123", "Enabled": "NotABoolValue", "Age": 23 }
Run Code Online (Sandbox Code Playgroud)

而且我根本没有任何对象.我想要的是获得一个对象:

new A() { Id = "123", Enabled = null, Age = 23 }
Run Code Online (Sandbox Code Playgroud)

并在可能的情况下解析警告.是否可以使用JSON.NET完成?

error-handling json json.net deserialization

57
推荐指数
3
解决办法
2万
查看次数

ASP.NET Core 2.0 JWT验证因"用户授权失败:(null)"错误而失败

我正在使用ASP.NET Core 2.0应用程序(Web API)作为JWT发行者来生成移动应用程序的令牌消费品.不幸的是,这个令牌无法由一个控制器验证,而另一个控制器可以验证(在同一个asp.net核心2.0应用程序中使用相同的验证设置).

所以我有一个有效且可以解码的令牌,具有所有必需的声明和时间戳.但是一个端点接受它,而另一个端点给我401错误和调试输出:

Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:用户授权失败:(null).

[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2]
      Authorization failed for user: (null).
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:Information: Authorization failed for user: (null).
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[3]
      Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
Microsoft.AspNetCore.Mvc.ChallengeResult:Information: Executing ChallengeResult with authentication schemes ().
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.ChallengeResult[1]
      Executing ChallengeResult with authentication schemes ().
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[12]
      AuthenticationScheme: Bearer was challenged.
Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler:Information: AuthenticationScheme: Bearer was challenged.
[40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
      Executed action MyController.Get (WebApi) in 72.105ms
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Executed action MyController.Get (WebApi) in 72.105ms
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: …
Run Code Online (Sandbox Code Playgroud)

c# bearer-token asp.net-core asp.net-core-webapi asp.net-core-identity

41
推荐指数
5
解决办法
2万
查看次数

在Visual Studio中安装NUGET程序包时出错

我正在尝试在Windows Phone 8项目的Visual Studio 2013下通过NUGET安装Nokia Imaging SDK,但每次我收到以下错误:

在条件"'$(TargetPlatformVersion)'>'8.0'"条件下,尝试对"$(TargetPlatformVersion)"进行数值比较,评估为""而不是数字.C:\ Program Files(x86)\ MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets

nuget visual-studio-2013 nokia-imaging-sdk lumia-imaging-sdk

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

无法复制程序集'/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll'

每次我尝试部署我的项目时,我都会收到以下错误:

编译为本机代码/ Developer/MonoTouch/usr/bin/mtouch -sdkroot"/Applications/Xcode.app/Contents/Developer"--cache"/ Users/user/Desktop/Source/iOS/obj/iPhone/Release/mtouch -cache"--nomanifest --nosign -dev"/Users/user/Desktop/Source/iOS/bin/iPhone/Release/iOS.app"-r

...

-linksdkonly -sdk"7.1"-targetver"7.1"--abi = armv7"/Users/user/Desktop/iOS/bin/iPhone/Release/iOS.exe"Xamarin.iOS 7.2.6商业版使用框架:/ Applications /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk错误MT1009:无法复制程序集'/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll'到'/Users/user/Desktop/iOS/obj/iPhone/Release/mtouch-cache/Link/monotouch.dll':访问路径"/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll. mdb"或"/Users/user/Desktop/iOS/obj/iPhone/Release/mtouch-cache/Link/monotouch.dll.mdb"被拒绝.

我清理了obj文件夹 - 没有运气.我重新启动了mac - 没有运气.我试图去/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll但是无法访问这个文件夹 - 它说我没有权利.

mono xamarin xamarin-studio

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

Web部署到Azure不会强制Web App获取新更改

我有一个从我GITAzure App使用配置的自动部署Web Deploy.每次将新代码推送到repo时,都会启动build,然后将其部署到Azurewith Web Deploy.

问题是Web App(ASP.NET MVC)继续使用部署的代码提供请求,并且文件替换不会真正影响它.即使web.config已更改.基本上,我可以强制加载新应用程序的唯一方法是手动重启(或停止/启动).

这是我的publishig配置文件:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://app-name.azurewebsites.net</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>app-name.scm.azurewebsites.net:443</MSDeployServiceURL>
    <DeployIisAppPath>app-name</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <UserName>$app-name</UserName>
    <Password>...</Password>
    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
    <_SavePWD>True</_SavePWD>
    <_DestinationType>AzureWebSite</_DestinationType>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

msdn的相似主题没有答案

asp.net asp.net-mvc azure web-deployment microsoft-web-deploy

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

更新ElasticSearch docker容器Mac主机的max_map_count

我使用这个容器开始elasticsearchdocker.按照手册我必须更新max_map_count以启动容器

sudo sysctl -w vm.max_map_count = 262144

但是..我可以在我的主机(容器)中更新它在我启动它之后我无法启动它.难道我做错了什么?

错误:引导程序检查失败的最大虚拟内存区域vm.max_map_count [65530]可能太低,增加到至少[262144]

如果我尝试在我的主机(Mac)上执行此操作,则会出现以下错误.

sysctl:unknown oid'vm.max_map_count'

Docker引擎安装所有容器正在运行的Lunix VM.因此,应该为Linux主机执行增加限制的命令,而不是Mac.

如何通过Docker引擎安装的终端访问Linux VM?

containers elasticsearch docker docker-container

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

UITableView滚动不流畅

我在UITableView上使用包含UIImageView的UITableViewCell进行平滑滚动问题.在StrackOverflow上可以找到类似的问题,但是所提出的解决方案都没有帮助我彻底摆脱滞后.

我的情况很常见:

  1. 图像存储在应用程序存储中(在我的应用程序包示例中)
  2. 图像可能有不同的大小(500x500,1000x1000,1500x1500)
  3. 我需要在UITableView中显示那些图像,其中UIImageView大小为120x120(视网膜)

我遵循了多个优化技巧,并设法优化滚动.不幸的是它仍然不完美.这是我的情景:

  1. 首先,我将所有图像加载/处理/调整大小逻辑移动到后台线程
  2. 启用UITableViewCell重用
  3. 一旦UITableViewCell在视图中我清除旧值(设置为null)并启动后台线程来加载图像
  4. 在这一点上,我们在后台线程,我添加500毫秒延迟,以避免经常设置新图像(如果我们正在快速滚动)(见下面的解释)
  5. 如果UIImage存在于静态图像缓存(带有UIImage实例的常规字典)中 - 获取那个并转到步骤9.
  6. 如果不是 - 使用url到app捆绑包(imageWithName)加载新图像(在现实世界中,场景图像将存储到应用程序存储,而不是捆绑)
  7. 加载图像后,使用图形上下文将其调整为120x120
  8. 将已调整大小的图像保存到静态图像缓存中
  9. 在这一点上我们有UIImage的实例和进程在后台线程.从这里开始,我们将使用给定的图像返回UI Thread
  10. 如果数据上下文被清除(例如UITableViewCell消失或被重用以显示另一个图像),我们将跳过当前可用图像的处理.
  11. 如果数据上下文相同 - 使用alpha动画(UIView.Animate)将UIImage分配给UIImageView
  12. 一旦UITableViewCell不在视图范围内 - 清除数据上下文

最初在开始新的后台线程之前获取图像(步骤1)是没有后台线程的UIImage缓存检查.在这种情况下,如果我们在缓存中有图像,我们会立即分配它,这会在快速滚动期间引入很大的延迟(只要我们立即获取图像,我们就会经常分配图像).我在下面的例子中评论了这些行.

还有两个问题:

  1. 在滚动期间的某个时刻,我仍然有一个小的滞后(当我将新的UIImage分配给UIImageView时.
  2. (这个更明显)当你点击项目并从细节返回时,在后退导航动画完成之前有一个延迟.

任何建议如何处理这两个问题或如何优化我的方案表示赞赏

请考虑使用Xamarin编写的示例,但我不相信Xamarin是导致问题的原因,只要我对ObjectiveC中编写的应用程序也有同样的问题.

平滑滚动测试应用程序

uitableview uiimage smooth-scrolling ios xamarin

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

使用MvvmCross ShowViewModel传递复杂的导航参数

即使配置了此处指定的MvxJsonNavigationSerializer,我的复杂类型也不会从Show传递给Init方法v3中导航参数中的自定义类型

public class A
{
 public string String1 {get;set;}
 public string String2 {get;set;}
 public B ComplexObject1 {get;set;}
}

public class B
{
 public double Double1 {get;set;}
 public double Double2 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我将对象A的实例传递给ShowViewModel方法时,我收到此对象,String1&String2正确反序列化,但CopmlexObject1为null.

如何处理复杂对象MvvmCross序列化?

navigation serialization viewmodel complextype mvvmcross

15
推荐指数
2
解决办法
8760
查看次数

应用程序传输后,iOS应用程序更新失败并显示"拒绝升级"错误

我将我的iOS应用从一个苹果帐户转移到另一个苹果帐户,这会导致团队ID更改.干净的重新安装工作正常但每次安装更新时我都会收到以下错误:

[MIInstallableBundle performVerificationWithError:]:517:Upgrade的application-identifier权利字符串(new_teamid.bundle.id)与安装的应用程序的application-identifier字符串(old_teamid.bundle.id)不匹配; 拒绝升级.

我找到使用'previous-application-identifiers'键更新Entitlements 的解决方案,并从Apple请求新的配置文件以便能够签署该应用程序:

<key>previous-application-identifiers</key>
<array>
    <string>{Your Old App ID Prefix}.YourApp.Bundle.ID</string>
</array>
Run Code Online (Sandbox Code Playgroud)

如果没有该配置文件,我在安装过程中会收到以下错误:

无法验证MIExecutableBundle的代码签名path = path.app identifier = bundle_id type = 4 0xe8008016(找到配置文件不允许的权利)}

所以我联系了Apple并要求提供神奇的条款.

  • 我找到了能够更新应用程序的正确解决方案吗?
  • Apple能够帮助我并提供配置文件吗?
  • Apple生成并提供个人资料需要多长时间?

app-id ios provisioning-profile bundle-identifier

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