小编Ant*_*Dev的帖子

应用程序从纵向到横向动画

我的应用程序设置为仅支持横向(iPad)方向:在我的.plis中我已将支持的界面方向设置为横向(左和右)在我的项目中我已经在我的主视图控制器中检查了上面提到的两个方向我已设置

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

-(bool)shouldAutorotate
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

在我运行应用程序后,它总是接缝到从纵向到横向的旋转动画.这是我看到的第一件事,从景观旋转,之后一切看起来都很好.它在设备和模拟器上是相同的.如果我在模拟器选项中检查"切换慢动画",我可以清楚地看到界面在启动期间从纵向改变方向.

我没有使用闪屏(如果这很重要)

无论我做什么,我都无法摆脱这种行为,看起来很烦人.有没有人见过这种行为,请有人提出一些建议.提前致谢.

xcode objective-c ios7

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

是NSUserDefaults线程安全

我知道文档说它是,并且我知道这个主题已经在讨论中,但我有一个有趣的堆栈结果,我不能得出其他任何东西,但这[NSUserDefaults standardUserDefaults]不是线程安全的.所以我会发布我的崩溃日志,并希望有人看到我不能的东西......

坠毁的线程

    ... 
    libdispatch.dylib 0x3ab53d67 _dispatch_client_callout + 23
    libdispatch.dylib 0x3ab65e73 _dispatch_barrier_sync_f_invoke + 27
    CoreFoundation 0x302b470d CFPreferencesAppSynchronize + 265       
    Foundation 0x30151b01 -[NSUserDefaults(NSUserDefaults) synchronize] + 25
    MyApp 0x0009df8b -[AppDelegate applicationDidEnterBackground:] (AppDelegate.m:178)
    ...
    MyApp 0x0005344b main (main.m:17)
    MyApp 0x000533f8 start + 40
Run Code Online (Sandbox Code Playgroud)

一些其他线程

    ...
    CoreFoundation 0x302bc13f _CFXPreferencesSetValue + 107
    CoreFoundation 0x302bc039 CFPreferencesSetAppValue + 41
    Foundation 0x30c76935 -[NSUserDefaults(NSUserDefaults) setObject:forKey:] + 61
    MyApp 0x000b2e9d -[AppData parserDidEndDocument:] (AppData.m:1013)
   ...
Run Code Online (Sandbox Code Playgroud)

堆叠的部分已经被切掉并用"......"代替,因为它太长并且与主题无关.应用程序崩溃消息:

*集合<__ NSDictionaryM:0x15a04ae0>在枚举时发生了变异.....

代码:AppDelegate: - > crached thread ...

    - (void)applicationDidEnterBackground:(UIApplication *)application
    { …
Run Code Online (Sandbox Code Playgroud)

iphone thread-safety nsuserdefaults ios

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

核心数据executeFetchRequest消耗大量内存

我在核心数据库中插入cca 100 000条记录.数据库包含3个实体.玩家,俱乐部,玩家俱乐部实体处于关系中:玩家< - >> PlayerClub << - >俱乐部插入PlayerClub后,我注意到在插入大约50,000条记录后,大量内存消耗和速度损失.记录永远不会更新,因为PlayerClub只有唯一值.出于测试原因,我已经清空了玩家和俱乐部表并再次运行程序.没有速度下降,但内存消耗再次巨大.这是代码:

    NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
    [context setPersistentStoreCoordinator:ap.persistentStoreCoordinator];
    [context setUndoManager:nil];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"PlayerClub"
                                              inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];

    NSEntityDescription *entityKlubovi = [NSEntityDescription entityForName:@"Club" inManagedObjectContext:context];
    NSFetchRequest *requestKlubovi = [[NSFetchRequest alloc] init];
    [requestKlubovi setEntity:entityKlubovi];
    [requestKlubovi setFetchLimit:1];

    NSEntityDescription *entityIgraci = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:context];
    NSFetchRequest *requestIgraci = [[NSFetchRequest alloc] init];
    [requestIgraci setFetchLimit:1];
    [requestIgraci setEntity:entityIgraci];

    for (int i=0; i<[parsedKlubIgraci count]; i++) {
        @autoreleasepool {
            KlubIgrac *klubIgrac = [[KlubIgrac alloc] initWithEntity:entity …
Run Code Online (Sandbox Code Playgroud)

iphone core-data ios

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

ios以编程方式创建证书请求

我试图在iOS am OSX中以编程方式(我将发送到服务器)创建证书请求,而不使用openSSL.我已经设法创建了RSA密钥对,但我没有做其余的事情.我有完全符合我需要的代码,但它是用Java编写的,我想知道是否有人帮助我将其转换为目标c.

这是Java代码:

        test.generateKeys(); // generate RSA key pair

        PrivateKey privateKey = test.keys.getPrivate();
        PublicKey publicKey = test.keys.getPublic();

        SecureRandom sr = new SecureRandom();
        String token = "123456"; // dummy token
        String uuid = "4670ff33-d9f7-4026-957d-25c00e4dec54"; // dummy uuid

        // with Bouncy Castle
        ContentSigner signGen = new JcaContentSignerBuilder("SHA1withRSA").setSecureRandom(sr).build(privateKey);
        X500Principal subject = new X500Principal("O=" + token + ", CN=" + uuid);
        PKCS10CertificationRequestBuilder builder = new JcaPKCS10CertificationRequestBuilder(subject, publicKey);
        PKCS10CertificationRequest request = builder.build(signGen);

        String bc = Hex.encodeHexString(request.getEncoded());
        System.out.println(PEMtoString(request));
Run Code Online (Sandbox Code Playgroud)

我在加密方面不是很好,加密层苹果正在开发的文档很难记录,所以我在这里有点迷失.我遇到了很多类似的样本,但总有一些东西丢失了.Thx提前.

java cryptography objective-c public-key-encryption ios

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

iOS 10 Today 扩展无法再读取共享用户默认值

我有一个实现 Today 扩展的应用程序。直到 iOS10 它运行良好,但现在我看到它无法读取存储在共享 NSuserDefaults 中的密钥。

我的主机应用程序代码:

NSUserDefaults *sharedPrefs = [[NSUserDefaults alloc] initWithSuiteName:kSharedGroupIdentifier];
[sharedPrefs setObject:username forKey:@"username"];
[sharedPrefs setObject:@"Test" forKey:@"test"];
[sharedPrefs synchronize];
Run Code Online (Sandbox Code Playgroud)

我的扩展代码:

NSUserDefaults *sharedPrefs  = [[NSUserDefaults alloc] initWithSuiteName:kSharedGroupIdentifier];
NSString *str = [sharedPrefs valueForKey:@"test"];
Run Code Online (Sandbox Code Playgroud)

并且 str var 在扩展中始终为零。我已经为主机应用程序和扩展应用程序在功能中设置了我的应用程序组,并且我已经根据 Apple 开发人员门户上的设置进行了检查。一切正常。任何人都可以帮忙,我必须做些什么不同的事情吗?

编辑 我注意到的另一件事是我有一个红色感叹号:“将添加组权利添加到您的权利文件”,当我解决问题时,感叹号消失了,但是当我关闭并重新打开项目时有吗。我重新创建了临时配置文件,但仍然是同样的问题

xcode objective-c ios

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

快速视频流启动

我正在构建一个流式传输视频内容的应用程序,例如 TikTok。因此,您可以在表格中滑动视频,当新单元格可见时,视频开始播放。它的效果非常好,除非你将它与 TikTok 或 Instagram 等进行比较。我的视频开始流式传输速度非常快,但并非总是如此,它对网络质量非常敏感,有时即使网络很好,它仍然缓冲太长时间。与 TikTok、Instagram 相比……在相同条件下,他们似乎没有这个问题。我使用 JWPlayer 作为视频托管服务,使用 AVPlayer 作为播放器。我还在将资产分配给 PlayerItem 之前对资产进行异步预加载。所以我的问题是我还能做些什么来加快视频启动速度。在将其上传到流媒体服务之前,我是否需要做一些特殊的视频准备工作?(我也流式传输 m3U8 文件)。是否有一些预设可以实现最佳的流媒体质量和启动速度。提前致谢。

video video-streaming ios avplayer swift

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

在将数据发送到服务器之前加密客户端应用程序上的数据

我正在尝试创建一个应用程序,它将加密所有用户输入数据,然后将其发送到服务器,它将存储在sql数据库中.我们的想法是数据库中的数据始终是加密的,并且只能在客户端应用程序上解密,所以我想在客户端应用程序上创建和存储私钥.第二个要求是所有应用程序都可以解密写在服务器数据库上的数据,因此我假设所有应用程序应该共享相同的私钥.

我的问题是:

  • 如何在项目中存储私钥以保证其安全:我正在考虑对其进行模糊处理,然后将其存储到钥匙串中,但据我所知,混淆和钥匙串都不是很安全.我担心的是,如果我的所有应用实例都使用相同的私钥,那么黑客只需通过越狱自己的手机就可以轻松访问我的数据.如果我在运行中生成它,那么所有应用程序将拥有不同的私钥,并且无法以可读形式共享数据
  • 实现这一目标有哪些最佳实践,如果钥匙串不安全,是否还有其他地方或方法,如果不存在我将使用钥匙串,但至少我想解决项目中硬编码密钥的问题所以它可以在第一次运行时保存在钥匙串中

编辑

只是为了澄清一点

可以说我们有类似云服务的东西,每个云都可以加入很多设备.当其中一个设备更改某些资源时,所有设备都会与其云同步.该云用一个配置文件表示,该配置文件包含有关拥有设备的用户的一些个人数据.我希望加入云(C1)的所有设备都可以看到(读取)与该云相关联的个人数据,我不喜欢的是某些数据库管理员可以读取该数据.所以我想在客户端加密数据,并在客户端解密.

简而言之,加密不是出于传输目的,因为我使用ssl,它只是尝试符合关于个人数据安全性的新GDPR规则.

编辑1

经过一番调查,我发现了一个名为"客户端加密"的东西.它完全符合我的需求,数据在客户端加密,发送到服务器,存储在db中,并在客户端再次解密.但我似乎无法找到一种方法来处理在我的项目中硬编码私钥的需要.为了将它保存到钥匙串,我必须从某个地方加载它,如果我生成它比其他客户端不会有相同的密钥,它将无法解密数据.所以有人可以帮助我,我是从错误的角度看待这个吗?

encryption cryptography ios

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