小编Sta*_*ich的帖子

"NSString*__unused aString"和"NSString __unused*aString"是否相同?

  1. NSString * __unused aStringNSString __unused * aString等价的,当他们的变量声明?

  2. - (void)aMethod:(NSString * __unused)aString- (void)aMethod:(NSString __unused *)aString等价的,当它们是Objective-C方法参数声明时?

  3. 如果答案是"是",我应该选择哪种形式正确?

在启用/禁用GCC_WARN_UNUSED_PARAMETERGCC_WARN_UNUSED_VARIABLE指令时,两种情况下的两种形式似乎都相同.

我没有找到任何澄清这一点的信息.


相关主题:

__unused标记行为/用法(GCC与目标C)

objective-c clang

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

解决保留周期:当我们已经有__weak*weakSelf时,是否真的有理由添加__strong*strongSelf?

如果我有一个类Foo声明如下:

@interface Foo : NSObject
@property (copy, nonatomic) void (^aBlock)(void);
- (void)bar;
@end

@implementation Foo
- (void)bar {}
@end
Run Code Online (Sandbox Code Playgroud)

我在Foo实例中存储了一个捕获此实例的块:

Foo *foo = [Foo new];

__weak Foo *weakFoo = foo;
foo.aBlock = ^{
    __strong Foo *strongFoo = weakFoo; <--- does this __strong Foo * really makes sense?

    [strongFoo bar];
}

... then somewhere later use foo.aBlock()
Run Code Online (Sandbox Code Playgroud)

或者我只是这样做:

Foo *foo = [Foo new];

__weak Foo *weakFoo = foo;
foo.aBlock = ^{
    [weakFoo bar];
}

... then somewhere later use foo.aBlock()
Run Code Online (Sandbox Code Playgroud)

添加是否 …

objective-c objective-c-blocks automatic-ref-counting

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

尝试使用相同的资源两次时"使用移动的值"

这是代码:

extern crate tempdir;

use std::env;
use tempdir::*;

#[test]
fn it_installs_component() {
    let current_dir = env::current_dir().unwrap();
    let home_dir = env::home_dir().unwrap();
    let tmp_dir = env::temp_dir();

    println!("The current directory is: {}", current_dir.display());
    println!("The home directory is: {}", home_dir.display());
    println!("The temporary directory is: {}", tmp_dir.display());

    let stage_dir = TempDir::new_in(tmp_dir.as_path(), "Components-Test");

    let components_dir = TempDir::new_in(stage_dir.unwrap().path(), "Components");

    // This is "offending line"
    // let components_make_dir = TempDir::new_in(stage_dir.unwrap().path(), "Components.make");

    println!("---- {:?}", components_dir.unwrap().path());
    //println!("---- {:?}", components_make_dir.unwrap().path());
}
Run Code Online (Sandbox Code Playgroud)

如果违规行被注释掉,则代码编译得很好.如果我取消注释它,我开始收到错误:

error[E0382]: use of moved value: `stage_dir`
  --> src/main.rs:21:51
   | …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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

使用索引号数组对NSArray进行排序

我有这样一个数组:

NSArray *needSortedArray = @[@"Alex", @"Rachel", @"Mohamad"];
Run Code Online (Sandbox Code Playgroud)

和一个像这样的索引数组:

NSArray *indexArray = @[@1, @0, @2];
Run Code Online (Sandbox Code Playgroud)

所以我想要的输出看起来像这样:

needSortedArray = @[@"Rachel", @"Alex", @"Mohamad"];
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?可能吗?

arrays objective-c ios

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

制作一个宏:如何正确嵌入字符串

#define SDNSPredicate(key,value) \
    [NSPredicate predicateWithFormat:@"#key == %@",value];
Run Code Online (Sandbox Code Playgroud)

当我使用时SDNSPredicate(@"hCName",@"ccc"),我期待hCName == "ccc"但它变成了key == "ccc"

怎么做对了?

macros objective-c

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