小编Mob*_*Ben的帖子

子类化时转发声明vs #import

我有MyClassA一个类型的属性MyClassB

//
//  MyClassA.h
//  

@interface MyClassA : NSObject

@property (strong, nonatomic, readonly) MyClassB *myClassB;

@end
Run Code Online (Sandbox Code Playgroud)

MyClassB有房产myString.

//
//  MyClassB.h
//  

@interface MyClassB : NSObject

@property (copy, nonatomic, readonly) NSString *myString;

@end
Run Code Online (Sandbox Code Playgroud)

我有MyClassC需要访问myString它的实现.

我是不是该 -

一)正向声明MyClassBMyClassA.h,并#import "MyClassB.h"MyClassC.m

要么

b)#import MyClassB.hinMyClassA.h

import objective-c include forward-declaration

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

genstrings -s 仍然与 NSLocalizedString* 匹配

我认为这是一个genstrings错误或“功能”,但想看看是否有人遇到过这个问题或知道答案。我正计划为此打开一个雷达。

我们使用我们自己的本地化宏。让我们称之为CustomLocalizedString。在我们的代码库中,它非常大,我们使用了很多 3rd Party 库。对于绝大多数 3rd Party 库,如果它们碰巧拥有任何本地化字符串,我们不想要它们。当我们确实想使用他们的本地化字符串时,我们修改 3rd Party lib 以使用我们的CustomLocalizedString宏。由于我们不关心的字符串正在使用NSLocalizedString*宏,因此我们认为这不是问题。

本地化基本上开始标记一些有问题的字符串。经过一番研究,我意识到它来自 3rd Party lib。然后我进一步意识到我们还包括了其他不应该存在的字符串(我们有大量的字符串)。这些是使用NSLocalizedString*marco 的字符串。

所以我们的调用genstrings是这样的:

genstrings -o output -s CustomLocalizedString

我实际上使用xargsfind创建文件参数,因此为简洁起见,我省略了那部分。根据输出,它看起来像是genstringsNSLocalizedStringCustomLocalizedString字符串都放入 Localizable.strings 文件中。

为了进一步验证我创建了一个文件:

NSLocalizedString(@"Normal localized string macro", nil);
CustomLocalizedString(@"Custom localized string macro", nil);
Run Code Online (Sandbox Code Playgroud)

并跑了:

genstrings -o out -s CustomLocalizedString localized_string.txt
Run Code Online (Sandbox Code Playgroud)

输出是:

/* No comment provided by engineer. */
"Custom localized string macro" = "Custom …
Run Code Online (Sandbox Code Playgroud)

xcode localization genstrings

6
推荐指数
0
解决办法
624
查看次数

Docker Python 库无法正确登录 AWS ECR

我编写了一个 Python 脚本来将映像从 AWS ECR 提取到 Ubuntu 实例。在此实例中,我运行 docker 命令,因为sudoDocker 未设置为非 root 用户。

sudo我在调用脚本时确实使用。我发现如果我当前先登录 AWS ECR 然后运行脚本,它会按预期工作。但是,如果我没有登录,并且身份验证令牌已过期,则似乎docker login可以工作,但是当我尝试拉取时,我收到一条消息,指示“存储库不存在或我需要'docker登录'”。

检查日志,它验证这一点

2 月 15 日 06:00:38 ubuntu-xenial dockerd[1388]: time="2019-02-15T06:00:38.832827449Z" level=error msg="错误后不继续拉取:被拒绝:您的授权令牌已过期。请运行“aws ecr get-login --no-include-email”来获取新邮件。”

def log_into_aws_ecr(docker_client, region):
    # To do, set region
    ecr_client = boto3.client('ecr', region_name=region)

    # Get all repos
    response = ecr_client.describe_repositories()
    repo_names = []
    repositories = response.get('repositories', [])
    for repo in repositories:
        name = repo.get('repositoryName', '')
        if len(name):
            repo_names.append(name)
    token = ecr_client.get_authorization_token()
    username, password = …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services docker

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