当前位置: 首页 > news >正文

可以做烟草网站搜索引擎的两个基本方法

可以做烟草网站,搜索引擎的两个基本方法,婚庆策划公司简介,asp化妆品网站源码demo贴上我的github blockOne 块类似于匿名函数或闭包,在许多其他编程语言中也存在类似的概念。 Block 以下是块的一些基本知识: 块的定义:块是由一对花括号 {} 包围的代码片段,可以包含一段可执行的代码。块的定义使用 ^ 符号…

demo贴上我的github
blockOne

块类似于匿名函数或闭包,在许多其他编程语言中也存在类似的概念。

Block

以下是块的一些基本知识:

  1. 块的定义:块是由一对花括号 {} 包围的代码片段,可以包含一段可执行的代码。块的定义使用 ^ 符号,并可以带有参数列表和返回类型。例如:
^{// 代码块的内容
}
  1. 块的类型:块也是一种数据类型,与函数类似。它们可以具有参数和返回值类型。可以使用 typedef 来定义块的类型。例如:
typedef returnType (^BlockTypeName)(parameterTypes);

其中 returnType 是块的返回类型,BlockTypeName 是块的类型名称,parameterTypes 是块的参数类型。
3. 块的赋值和调用:块可以赋值给变量,并且可以像函数一样进行调用。可以使用 = 运算符将块赋值给变量,然后使用该变量调用块。例如:

ReturnType (^blockName)(ParameterTypes) = ^ReturnType (Parameters) {// 块的内容
};
blockName(argumentValues); // 调用块
  1. 块的捕获变量:块可以捕获其定义范围内的变量,并在块内部访问这些变量。捕获的变量在块中形成了一个闭包,可以在块的[[生命周期]]内保持其状态。例如:
NSInteger outsideVariable = 10;
void (^block)(void) = ^{NSLog(@"Outside variable: %ld", (long)outsideVariable);
};
block(); // 输出:Outside variable: 10

在这个例子中,块捕获了外部的 outsideVariable 变量,并在块内部访问它。
默认情况下,为块所捕获的变量是不可以在块里面修改的,如果修改了outsideVariale的值,就会报错,声明变量的时候可以加上__block修饰符,这样就可以在块内修改了


  1. 块作为参数:块可以作为方法或函数的参数进行传递,从而实现回调和异步操作等功能。可以将块作为参数声明,并在调用方法或函数时传递块。例如:
- (void)performOperationWithCompletion:(void (^)(void))completionBlock {// 执行操作// 操作完成后调用块completionBlock();
}// 调用方法,传递块作为参数
[self performOperationWithCompletion:^{NSLog(@"Operation completed!");
}];

在这个例子中,performOperationWithCompletion: 方法接受一个块作为参数,并在操作完成后调用该块。

#pragma mark **--修改为块所捕获的变量**NSArray *array = @[@0, @1, @2, @3, @4, @5];**__block** NSInteger count = 0;//块作为方法的参数[array enumerateObjectsUsingBlock:^(NSNumber *number, NSUInteger idx, **BOOL** *stop) {**if** ([number compare:@2] == NSOrderedAscending) {count++;}NSLog(@"%ld====%@",(**unsigned** **long**)idx, number);}];NSLog(@"%ld", (**long**)count);//内联块的用法,传给“numberateObjectsUsingBlock:"方法的块并未先赋给局部变量,而是直接在内联函数中调用了,如果块所捕获的变量类型是对象类型的话,那么就会自动保留它,系统在释放这个块的时候,也会将其一并释放。这就引出了一个与块有关的重要问题,块本身可以视为对象,在其他oc对象能响应的选择子中,很多块也可以响应,最重要的是,块本身也会像其他对象一样,有引用计数,为0时,块就回收了,同时也会释放块所捕获的变量,以便平衡捕获时所执行的保留操作//如果块定义在oc类的实例方法中,那么除了可以访问类的所有实例变量之外,还可以使用self变量,块总能修改实例变量,那么除了声明时无需添加__block。不过,如果通过读取或写入操作捕获了实例变量,那么也会自动把self给捕获了,因为实例变量是与self所指代的实例关联在一起的。// 需要注意的是(self也是一个对象,也会被保留),如果在块内部使用了实例变量,块会自动对self进行保留操作,以确保在块执行期间保持对象的有效性。但是,如果在块内部直接使用了self,并对其进行读取或写入操作,那么self也会被捕获,从而导致循环引用的问题。为了避免循环引用,可以在块内部使用__weak修饰符来避免对self进行保留操作。

如果某个实例在执行anInstanceMethod放法,那么self变量就会指向此实例。由于块里没有明确使用self变量,所以很容易就会忘记self变量其实也为块所捕获了。直接访问实例遍历和通过self来访问时等效的:
self->_anInstanceVariable = @“someThing”;

typedef void(^SomeBlock) (void);
@property (nonatomic, copy) BlockName someBlock;
`- (void)anInstanceMethod {self.someBlock = ^ {_anInstanceVariable = @"someThing";}}

self也是个对象,因而块在捕获它时也会将其保留。如果self所指代的那个对象同时也保留了块,那么这种情况就会导致“保留环”
修改为以下代码即可:

typedef void(^SomeBlock) (void);
@property (nonatomic, copy) BlockName someBlock;
__weak typeof(self)weakSelf = self;
`- (void)anInstanceMethod {self.someBlock = ^ {weakSelf.anInstanceVariable = @"someThing";}}
http://www.yidumall.com/news/17053.html

相关文章:

  • 网站图片轮播怎么做的steam交易链接怎么获取
  • 网站建设的优势企业网站建设原则是
  • 仿牌外贸网站google优化排名
  • 女女做的网站广告咨询
  • 微信app下载安装到手机上杭州seo网
  • 怎么做素材网站seo站长工具下载
  • 网站首页二级下拉框怎么做友情链接百科
  • 网站开发 超速云外链群发平台
  • 网站的推广方法深圳最新疫情
  • 黑龙江做网站的公司有哪些武汉seo关键词排名优化
  • 网站网站建设培训百度app 浏览器
  • 德州做网站哪家好许昌网络推广公司
  • 网站购买外链百度首页纯净版怎么设置
  • 电子商务网站安全性能主要包括安徽百度推广怎么做
  • 越秀区建设水务局网站河南靠谱seo电话
  • 做视频网站想用家庭网络广州信息流推广公司
  • 做网站有哪些要求代运营公司
  • 龙岩做网站开发哪家厉害免费b站软件推广网站2023
  • 做淘宝客网站能有效果吗网络运营推广具体做什么工作
  • 做网站 长百度账户托管运营
  • 模板做网站影响seo拓客平台有哪些
  • 怎么建php网站2024年最新一轮阳性症状
  • 网站名称填写什么汽车网络营销推广方案
  • 大埔网站建设百度一下你就知道了 官网
  • 英文网站制作 官网广东seo点击排名软件哪里好
  • 网站备案主体修改如何创建网址
  • 天津企业网站设计哪家好软文网站推广法
  • 自己做盗版影视网站百度allin 人工智能
  • 芜湖做的好的招聘网站邵阳网站seo
  • jsp网站开发需要哪些技术女装关键词排名