小编Gil*_*vik的帖子

调整单个实例,而不是类

我在NSObject上有一个类别应该是这样的东西.当我在一个对象上调用它时,我想覆盖它的dealloc方法来进行一些清理.

我想用方法调配来做,但无法弄清楚如何.我发现的唯一例子是关于如何替换整个类的方法实现(在我的例子中,它将覆盖所有NSObjects的dealloc - 我不想这样做).

我想覆盖NSObject的特定实例的dealloc方法.

@interface NSObject(MyCategory)
-(void)test;
@end

@implementation NSObject(MyCategory)
-(void)newDealloc
{
  // do some cleanup here
  [self dealloc]; // call actual dealloc method
}
-(void)test
{
  IMP orig=[self methodForSelector:@selector(dealloc)];
  IMP repl=[self methodForSelector:@selector(newDealloc)];
  if (...)   // 'test' might be called several times, this replacement should happen only on the first call
  {
     method_exchangeImplementations(..., ...);
  }
}
@end
Run Code Online (Sandbox Code Playgroud)

methods objective-c categories swizzling ios

17
推荐指数
2
解决办法
5224
查看次数

任何简单的VAD实现?

我正在为VAD(语音活动检测)寻找一些C/C++代码.

基本上,我的应用程序是从设备读取PCM帧.我想知道用户何时说话.我不是在寻找任何语音识别算法,而只是用于语音检测.

我想知道用户何时说话以及何时完成:

bool isVAD(short*pcm,size_t count);

c c++ iphone audio voice

14
推荐指数
2
解决办法
9491
查看次数

当行是可变高度时,使用FlatList滚动问题

我正在使用FlatList每行可以具有不同高度的位置(并且可以包含来自远程服务器的文本和零个或多个图像的混合).

我无法使用,getItemLayout因为我不知道每行的高度(也不是前面的那些)能够计算出来.

我面临的问题是我无法滚动到列表的末尾(当我尝试时它跳回几行)并且我在尝试使用时遇到问题scrollToIndex(我猜是因为我错过了这个事实getItemLayout).

我写了一个示例项目来演示这个问题:

import React, { Component } from 'react';
import { AppRegistry, StyleSheet, Text, View, Image, FlatList } from 'react-native';
import autobind from 'autobind-decorator';

const items = count => [...Array(count)].map((v, i) => ({
    key: i,
    index: i,
    image: 'https://dummyimage.com/600x' + (((i % 4) + 1) * 50) + '/000/fff',
}));

class RemoteImage extends Component {
    constructor(props) {
        super(props);
        this.state = {
            style: { flex: 1, height: 0 },
        };
    } …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-flatlist

11
推荐指数
2
解决办法
3408
查看次数

在XCode中编译设备/模拟器的不同文件

我在我的静态库中包含了第三方库(源代码).它只用于设备(​​因为它包含一些ARM程序集例程),我不希望为模拟器构建它(我只是希望我的应用程序在那里编译,所以我可以测试GUI).

  • 仅为模拟器创建另一个目标不是一个选项,因为我的项目将我的库作为依赖项引用,这将是一个维护的噩梦.
  • 为这些文件添加#if(TARGET_OS_IPHONE)也不是一个选项,因为这些不是我的原始资源,我想更新它们以便更新(那里有超过200个文件,我没有修改所有这些文件) )

我正在寻找一种方法(类似于源文件中的#if(TARGET_OS_IPHONE)),它可以从IDE本身工作(因此我可以根据我的目标架构从实际构建过程中排除文件).我发现的唯一一个选项是从目标中排除/包含文件 - 但不是针对特定的体系结构.

有没有办法为每个特定文件设置架构条件?

xcode simulator compilation build ios

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

使用Core Data设计聊天应用程序

我正在写一个聊天应用程序,我正在更改我的数据库以使用核心数据.我目前直接使用sqlite,但我想利用iCloud功能,所以我正在切换引擎.

我的主表名为Entry,具有以下属性:

NSInteger type;
NSDate* timestamp;
NSString* username;
NSString* session;
NSString* body;
Run Code Online (Sandbox Code Playgroud)

'type'可以是:

1 - message
2 - file transfer (which then 'body' represents a file name in the documents folder)
3 - user joined
4 - user left
Run Code Online (Sandbox Code Playgroud)

我的应用程序还支持多用户聊天(因此'用户加入'/'用户离开'类型的原因).所有消息属于同一个对话(仅限多个聊天),将具有有效的"会话"属性.

在我的聊天历史中,我的问题是如何实现像苹果在短信应用程序中所做的那样"加载更多":我将根据'username=%@ AND session IS NULL''session=%@'显示该历史进行查询,并使用由反向'时间戳'排序的限制为50.然后我想要一个"加载更多"按钮,它将加载接下来的50条消息 - 我不知道如何使用Core Data.

我的下一个问题是如何显示对话列表.现在使用原始sqlite,我在2个查询上执行连接:第一个是每个用户的最后一条消息,第二个是每个多用户对话的最后一条消息.然后我按日期对它们进行排序.由于Core Data不支持联接,我不确定如何执行此查询.

谢谢

database iphone core-data ios

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

如何使用带有arrayBuffer响应类型和React Native的Fetch api?

我目前正在使用我的RN项目的Fetch API.它适用于textjson响应类型,但它不适用于arrayBuffer

let res = await fetch('http://example.com');
let data = await res.arrayBuffer();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

fetch react-native

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

是否可以使用iOS SDK检测LTE连接?

我正在使用可访问性API来检测我当前的连接,但我只能区分WIFI和3G.

我得到以下标志:

LTE: kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

无线上网: kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

问题是LTE返回与3G连接相同的标志.有没有办法确定用户目前是否有LTE或3G?

sdk wireless connectivity 3g ios

7
推荐指数
2
解决办法
6564
查看次数

在使用ECS和Fargate时,卷的位置在哪里?

我有以下设置(我已经删除了非重要字段):

{
    "ECSTask": {
      "Type": "AWS::ECS::TaskDefinition",
      "Properties": {
        "ContainerDefinitions": [
          {
            "Name": "mysql",
            "Image": "mysql",
            "MountPoints": [{"SourceVolume": "mysql", "ContainerPath": "/var/lib/mysql"}]
          }
        ],
        "RequiresCompatibilities": ["FARGATE"],
        "Volumes": [{"Name": "mysql"}]
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作(容器确实正常启动),但我不太确定该卷的确切位置.我以为这将是一个EBS卷,但我没有看到它.我想这是我的任务的内部 - 但在这种情况下 - 我如何访问它?如何控制其限制(最小/最大尺寸等)?如何为此卷创建备份?

谢谢.

containers amazon-web-services amazon-ecs

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

使用PHP进行移动设备的令牌认证

我正在编写一个iPhone应用程序作为我网站的移动版本.

我打算公开一些REST API,以便应用程序可以更新用户的数据.

我不希望用户每次都登录,但我想保存他的令牌/ cookie并将其重新用于将来的所有请求.

我可以设置一个随机令牌并将其与用户ID一起传递,但它不是很安全,因为它很容易在越狱设备上访问它.我无法使用IP来限制它,因为IP可能会经常更改(因为它是移动设备).

实施此类身份验证的最佳方式是什么,该身份验证足够安全,但不会通过要求他经常验证自己来惹恼用户?

php authentication rest mobile

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

在iOS上访问Apple的根证书

我找到了以下代码:https://github.com/roddi/ValidateStoreReceipt/blob/master/validatereceipt.m,它在MacOS上加载根证书('Apple Root CA')

我也试图让它在iOS上运行.

我们的代码是用C++编写的,使用OpenSSL在使用SSL套接字时验证远程对等体.

在其他平台上,我们加载根证书并使用X509_STORE_add_cert将它们添加到上下文中.

然后,我们使用SSL_get_peer_certificate并验证主机名.这些不是自签名证书,这就是我们想要使用设备的根证书的原因.

我的问题是如何在iOS设备上获得根证书?

编辑:

我尝试了以下查询,但我一直得到-25300(errSecItemNotFound).

NSDictionary* query=[NSDictionary dictionaryWithObjectsAndKeys:
                     (__bridge id)kSecClassCertificate,kSecClass,
                     kCFBooleanTrue,kSecReturnRef,
                     kSecMatchLimitAll,kSecMatchLimit,
                     kCFBooleanTrue,kSecMatchTrustedOnly,
                     nil];
SecItemCopyMatching((__bridge CFDictionaryRef)query,&ref);
Run Code Online (Sandbox Code Playgroud)

security openssl certificate keychain ios

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