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则完成对象的初始化工作

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

My First IOS APP 视频笔记

My First IOS APP 视频笔记

很多人会通过查看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的

 

 

你可能感兴趣的:(笔记,斯坦福大学,第二讲,ios教学视频)