这用于Objective-C的weakify pattern
我的猜测是,这意味着:为自己指定一个弱引用,其名称为“weakSelf'和自我类型(例如MyViewController)
如果它是正确的并且看起来很明显:我想绝对确保做到这一点。感谢。
答案 0 :(得分:26)
我的猜测是,这意味着:为自己指定名为
weakSelf
和typeof
自我的弱引用(例如MyViewController
)
是的,这几乎就是它的含义。 self
的类型为MyViewController*
(带星号)而非MyViewController
。
使用此语法而不是简单地编写
的想法MyViewController __weak *weakSelf = self;
使重构代码变得更容易。使用typeof
还可以定义可以粘贴到代码中任何位置的代码段。
答案 1 :(得分:6)
使用libExtObjC中的@weakify
和@strongify
有助于简化弱势舞蹈"一个人有时必须在街区附近做。 OP引用了此article。
实施例<!/ em>的
__weak __typeof(self) weakSelf = self;
__weak __typeof(delegate) weakDelegate = delegate;
__weak __typeof(field) weakField = field;
__weak __typeof(viewController) weakViewController = viewController;
[viewController respondToSelector:@selector(buttonPressed:) usingBlock:^(id receiver){
__strong __typeof(weakSelf) strongSelf = weakSelf;
__strong __typeof(weakDelegate) strongDelegate = weakDelegate;
__strong __typeof(weakField) strongField = weakField;
__strong __typeof(weakViewController) strongViewController = weakViewController;
...对比
@weakify(self, delegate, field, viewController);
[viewController respondToSelector:@selector(buttonPressed:) usingBlock:^(id receiver){
@strongify(self, delegate, field, viewController);
答案 2 :(得分:5)
您的解释是正确的。但是,我发现当它以这种方式编写时,读起来有点令人困惑。我更喜欢typeof(self)
之后的额外空格:
__weak typeof(self) weakSelf = self;
答案 3 :(得分:4)
根据您的编译器设置,您可能会收到警告&#34;预期&#39 ;;&#39;表达后#34;。您可以通过将其更改为使用__typeof来解决此问题:if($_SERVER['REMOTE_ADDR']!="YOUR IP ADDRESS")
{
//exit or die
}
感谢Leo Natan和这个问题:https://stackoverflow.com/a/32145709/1758224。