【IOS】基础学习—IBAction和IBOutlet

IBAction和IBOutlet:IB指的是Interface Builder,两个均被用作关键字

IBOutletCollection是始终是NSArray属性,且秩序不一定得到保证
@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *buttons;

-(IBAction) show:(id)sender

  • 返回IBAction类型。
  • Method name of an active verb, describing the specific action performed.
  • 类型id的必需sender参数。所有目标/操作方法都将将操作的sender(通常是响应者)传递给接受参数的方法。如果方法签名中省略,事情仍然有效。
    @property (weak, nonatomic) IBOutlet UILabel *label;
    IBOutlet连接通常在视图或控件与其管理视图控制器之间建立,这通常是在响应者可能针对视图控制器执行的任何IBAction之外完成的。
    始终声明IBOutlet属性为weak,除非特别指出需要strong
    总结:声明IBAction和IBOutlet是为了应用启动后,能够被程序访问、调用以完成动态交互的功能。

Const ,extern static
extern NSString *const SUCCESS_COLOR;
一:const
1.const只修饰右边的变量, 变量为只读变量,变量属性是外连接的
2.const和宏的区别
  (1)宏是预编译执行,const是编译执行.
  (2)宏不会做编译检查,它只是做替换,因此不会编译报错;const会编译检查,会编译报错.
  (3)宏能定义方法或函数,const不能.
  (4)大量使用宏会造成编译时间长久.
  (5)大量使用宏并不会消耗很多内存,宏定义的是常量,常量是存放在常量去,只生成一份内存,并不像有些人所说的会消耗很多内存!
二.static和extern
1.static作用:
   (1)修饰局部变量
      1)延长局部变量的声明周期,程序结束才销毁
      2)局部变量只初始化一次,节省内存
      3)改变作用域
   (2)修饰全局变量
      1)只能在本文件中访问,修改全局变量作用域,生命周期不改变
      2)避免重复定义全局变量
2.extern作用:
    (1)只是用来获取全局变量的值,不能用来定义变量
    (2)工作原理是先在本文件中查找有没有全局变量,没有找到的话再去其他文件中查找.
三.static和const一起使用
1.防止重复声明全局变量
2.不希望同事无意中修改变量,只允许读取
3.声明一个静态的全局只读常量
四.extern与const一起使用
1.在多个文件中经常使用同一个字符串常量,用extern和const组合使用
2.一般建一个GlobeConst
_title = title;为什么变量名为title,但是值方法里却是_title?
:我们值声明一个变量时,编译时系统会自动给该变量重新定义起名,并添加该变量的setter 和getter方法,以_title出现在方法中
self.title = title:编写时用self代替下划线,这样访问其属性值,也就是getter方法,_title 是可以设置和获取属性值。
成员变量和属性
①:成员变量默认修饰是用protected修饰。不会自动生成set和get方法,需要自己手动代码实现。不能用点语法调用,因为没有set和get方法,只能使用->调用。
②:属性用”@property"声明,声明后默认会生成一个_类型的成员变量,同时也会生成setter/getter方法。在调用时使用self.的形式,如果self.表达式出现在等号=左边,调用该属性名称的setter方法。如:self.name = @“  ”;,给Name赋予值;
如果self.表达式出现在=右边,调用该属性名称的getter方法。如其他 = self.name;此时其他的值为此时的name值
当代码中有自定义的存或取方法时,自定义会屏蔽自动生成的getter/setter方法
如下述代码片段,会出现死循环

  • (void)setDataView:(DataView *)dataView {
       self.dataView = dataView;
      }
    原因是:dataView是属性值,self.dataView时默认调用getter方法,但是代码片段有重写的setter方法,所有系统会去setter方法小红读取当前值,而setter方法又出现self.dataView,导致系统一直在这个函数中循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值