相关疑难解决方法(0)

块声明语法列表

目标C中的块语法(实际上是C,我推测)是众所周知的不协调.将块作为参数传递看起来与将块声明为ivars不同,后者看起来与typedef块不同.

是否有一个完整的块声明语法列表,我可以随时查看以供快速参考?

syntax objective-c objective-c-blocks

276
推荐指数
6
解决办法
8万
查看次数

如何在Swift中使用完成处理程序创建一个函数?

我只是好奇我将如何处理这个问题.如果我有一个函数,并且我想在完全执行时发生某些事情,我该如何将它添加到函数中?谢谢

function completionhandler swift

104
推荐指数
5
解决办法
9万
查看次数

如何在Objective-C中的属性中存储块?

我想将objective-c块存储在属性中供以后使用.我不知道该怎么做所以我google了一下,关于这个主题的信息很少.但我最终设法找到了解决方案,我认为可能值得为像我这样的其他新手分享.

最初我认为我需要手动编写属性才能使用Block_copy和Block_release.

幸运的是,我发现块是NSObjects- copy/ - release等价于Block_copy/ Block_release.所以我可以@property (copy)用来自动生成setter和getter.

objective-c objective-c-blocks

76
推荐指数
3
解决办法
4万
查看次数

Apple的新编程语言Swift如何处理块和异步请求?

Cf Apple在Swift上的网页:https://developer.apple.com/swift/

Swift中的块是否像objective-c一样?它们是如何创建和调用的?

如何在Swift中执行异步请求?

在swift中创建与块相关的内存泄漏是否容易?如果是的话,你会如何避免它们?

swift

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

Cocoa阻止作为强大的指针与副本

我用块做了好几次,就像我有强烈参考的指针一样

我听说你应该使用copy,但是使用块作为指针而不是原始对象的含义是什么?

我从来没有得到编译器的抱怨,我不应该使用

@property (nonatomic, strong) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

但应该使用

@property (nonatomic, copy) MyBlock block;
Run Code Online (Sandbox Code Playgroud)

据我所知,块只是一个对象,所以为什么还要复制?

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

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

将Objective-C块定义为属性 - 最佳实践

我最近遇到了一个Apple文档,它显示了一个块的以下属性声明:

@interface XYZObject : NSObject
@property (copy) void (^blockProperty)(void);
@end
Run Code Online (Sandbox Code Playgroud)

此外,本文还指出:

注意:您应该将copy指定为属性属性,因为需要复制块以跟踪其在原始范围之外的捕获状态.在使用自动引用计数时,您不必担心这一点,因为它会自动发生,但属性属性的最佳做法是显示结果行为.有关更多信息,请参阅块编程主题.

我还阅读了建议的块编程主题,但没有找到任何相关的内容.

我仍然很好奇为什么将块属性定义为"复制"是最佳实践.如果您有一个好的答案,请尝试区分ARC和MRC差异(如果有的话).

谢谢

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

15
推荐指数
3
解决办法
6847
查看次数

如何在swift中声明带参数的块?

很难搞清楚如何使用swift正确声明/使用块.什么是以下代码的快速等价物?

谢谢.

^(PFUser *user, NSError *error) {
if (!user) {
    NSLog(@"Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew) {
    NSLog(@"User signed up and logged in through Facebook!");
} else {
    NSLog(@"User logged in through Facebook!");
}
Run Code Online (Sandbox Code Playgroud)

ios objective-c-blocks swift

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

Objective-C块是否已自动释放?

如果我声明一个这样的块^{ DoSomething; }并将其放在一个实例变量中,Block_copy()如果我要保留它,我是否需要?

objective-c objective-c-blocks

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

是否有可能从Objective-C获得中间C代码?

正如我所理解的那样,除了Objective-C语言是"干净"C的严格超集之外,添加的OOP范例是通过Objective-C Runtime Reference中部分描述的一组函数来模拟的.

因此,我希望有可能以某种方式在中间C/C++文件中编译Objective-C代码(可能有一些asm插入).

一般可能吗?

c c++ runtime objective-c

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

调用阻止iOS

我尝试调用一些块,但我遇到了一个EXC_BAD_ACCESS.

-(void) methodA {
   self.block = ^ {
       [self methodB];
   };
}

-(void) webViewDidFinishLoad:(UIWebView *)webView {
       [block invoke]; // error here (block is not valid id type).
}

-(void)methodB {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

有关为什么会发生这种情况的任何想法?

objective-c nsinvocation ios objective-c-blocks

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

源视图控制器在自定义segue期间隐藏

我正在尝试创建自定义segue,以便目标视图控制器从顶部向下滑动.

我根据文档中的示例编写了我的代码.

问题是当执行segue时,源视图控制器变黑,然后动画发生.如何防止源视图控制器变黑?

(我已经尝试实现此答案中提供的解决方案,但屏幕在转换后变为黑色,或者恢复为源视图控制器.)

这是我的代码:

-(void)perform{

    UIViewController *splashScreen = self.sourceViewController;
    UIViewController *mainScreen = self.destinationViewController;

    //Place the destination VC above the visible area        
    mainScreen.view.center = CGPointMake(mainScreen.view.center.x,
                                          mainScreen.view.center.y-600);

    //Animation to move the VC down into the visible area
    [UIView animateWithDuration:1
                     animations:^{
                         mainScreen.view.center = CGPointMake(mainScreen.view.center.x, [[UIScreen mainScreen] bounds].size.height/2 );
                     }
     ];

    [splashScreen presentModalViewController:mainScreen animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

core-animation ios uistoryboard uistoryboardsegue

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

使用@属性时,Xcode 4会自动生成iVars,在哪里可以找到此功能的官方文档?

我读过"Xcode中的新功能",但我找不到此功能的官方解释.我在哪里可以找到官方解释?哪个文件?谢谢.

xcode properties objective-c llvm ios

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