My First IOS APP 视频笔记

MVC

template->single view application

创建工程的目录,推荐目录home/developer/

所以我只需要weak指针,我只需要它在view里,通常outlet都是weak的

连接输出口后,修改为@ synthesize display=_display; 这种格式

将action连接到.m文件中的@synthesize下

复制按钮,同时也就复制了它的target action(如果有的话)

在.m文件中

 

@interface ClassA()
@property (nonatomic) BOOL flag;//私有接口
@end
@implementation ClassA
@synthesize flag=_flag;//注意格式
@end

读取_flag只能在setter和getter里进行,不要在代码其他地方使用,用的话用setter和getter

当property创建的时候,值是多少? 0或者nil。发消息给nil什么也不会发生。

确保operandStack为非nil的最佳位置是在它的getter里

在.m文件中

@interface CalculatorBrain()
@property (nonatomic, strong) NSMutableArray *operandStack;
@end 

@implementation CalculatorBrain
@synthesize operandStack=_operandStack;
- (NSMutableArray *) operandStack{
    if(_operandStack==nil){//这里是需要注意的地方
        _operandStack=[[NSMutableArray alloc]init];//延迟实例化
    }//这样不可能为nil,也只会alloc一次
    return _operandStack;
}
@end

synthesize不会自动分配空间,只会有一个指针变量,初始值为nil,需要你来分配

疑问:实例化,分配空间,release,alloc,init和nil的区别

解答:

对MyClass类的实例化的代码:[[MyClass alloc]init](注意:这只是实例化的一种方式)

alloc 是固定格式,是为对象申请内存空间,即分配空间;  init则完成对象的初始化工作

上述两步要写在一起,共同构成实例化。

很多人会通过查看getter来找property实例化的地方。如果没有getter,他们就找不到了,所以最好写上getter

Wrap a primitive type (like double) in an object (using NSNumber)

补充:obj-c和其他语言的不同之处,也就是信息存储方式的不同。obj-c里,我们用的是properties,以前用的是instance variable。我们还是用instance variable的,不过它变得像二等公民了。理解obj-c一件很重要的事就是private和public。区别只是在.h文件里还是在.m文件里。在头文件里的就是public的,不在就是private的

 

 

转载于:https://my.oschina.net/orange1/blog/78741

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值